3d27eda41ba5f01fbe5458e422bf973a2f65a40f
[external/binutils.git] / gdb / target.c
1 /* Select target systems and architectures at runtime for GDB.
2
3    Copyright (C) 1990-2014 Free Software Foundation, Inc.
4
5    Contributed by Cygnus Support.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 #include "defs.h"
23 #include <errno.h>
24 #include <string.h>
25 #include "target.h"
26 #include "target-dcache.h"
27 #include "gdbcmd.h"
28 #include "symtab.h"
29 #include "inferior.h"
30 #include "bfd.h"
31 #include "symfile.h"
32 #include "objfiles.h"
33 #include "dcache.h"
34 #include <signal.h>
35 #include "regcache.h"
36 #include "gdb_assert.h"
37 #include "gdbcore.h"
38 #include "exceptions.h"
39 #include "target-descriptions.h"
40 #include "gdbthread.h"
41 #include "solib.h"
42 #include "exec.h"
43 #include "inline-frame.h"
44 #include "tracepoint.h"
45 #include "gdb/fileio.h"
46 #include "agent.h"
47
48 static void target_info (char *, int);
49
50 static void default_terminal_info (struct target_ops *, const char *, int);
51
52 static int default_watchpoint_addr_within_range (struct target_ops *,
53                                                  CORE_ADDR, CORE_ADDR, int);
54
55 static int default_region_ok_for_hw_watchpoint (struct target_ops *,
56                                                 CORE_ADDR, int);
57
58 static void default_rcmd (struct target_ops *, char *, struct ui_file *);
59
60 static ptid_t default_get_ada_task_ptid (struct target_ops *self,
61                                          long lwp, long tid);
62
63 static void tcomplain (void) ATTRIBUTE_NORETURN;
64
65 static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *);
66
67 static int return_zero (void);
68
69 void target_ignore (void);
70
71 static void target_command (char *, int);
72
73 static struct target_ops *find_default_run_target (char *);
74
75 static target_xfer_partial_ftype default_xfer_partial;
76
77 static struct gdbarch *default_thread_architecture (struct target_ops *ops,
78                                                     ptid_t ptid);
79
80 static int dummy_find_memory_regions (struct target_ops *self,
81                                       find_memory_region_ftype ignore1,
82                                       void *ignore2);
83
84 static char *dummy_make_corefile_notes (struct target_ops *self,
85                                         bfd *ignore1, int *ignore2);
86
87 static int find_default_can_async_p (struct target_ops *ignore);
88
89 static int find_default_is_async_p (struct target_ops *ignore);
90
91 static enum exec_direction_kind default_execution_direction
92     (struct target_ops *self);
93
94 #include "target-delegates.c"
95
96 static void init_dummy_target (void);
97
98 static struct target_ops debug_target;
99
100 static void debug_to_open (char *, int);
101
102 static void debug_to_prepare_to_store (struct target_ops *self,
103                                        struct regcache *);
104
105 static void debug_to_files_info (struct target_ops *);
106
107 static int debug_to_insert_breakpoint (struct target_ops *, struct gdbarch *,
108                                        struct bp_target_info *);
109
110 static int debug_to_remove_breakpoint (struct target_ops *, struct gdbarch *,
111                                        struct bp_target_info *);
112
113 static int debug_to_can_use_hw_breakpoint (struct target_ops *self,
114                                            int, int, int);
115
116 static int debug_to_insert_hw_breakpoint (struct target_ops *self,
117                                           struct gdbarch *,
118                                           struct bp_target_info *);
119
120 static int debug_to_remove_hw_breakpoint (struct target_ops *self,
121                                           struct gdbarch *,
122                                           struct bp_target_info *);
123
124 static int debug_to_insert_watchpoint (struct target_ops *self,
125                                        CORE_ADDR, int, int,
126                                        struct expression *);
127
128 static int debug_to_remove_watchpoint (struct target_ops *self,
129                                        CORE_ADDR, int, int,
130                                        struct expression *);
131
132 static int debug_to_stopped_data_address (struct target_ops *, CORE_ADDR *);
133
134 static int debug_to_watchpoint_addr_within_range (struct target_ops *,
135                                                   CORE_ADDR, CORE_ADDR, int);
136
137 static int debug_to_region_ok_for_hw_watchpoint (struct target_ops *self,
138                                                  CORE_ADDR, int);
139
140 static int debug_to_can_accel_watchpoint_condition (struct target_ops *self,
141                                                     CORE_ADDR, int, int,
142                                                     struct expression *);
143
144 static void debug_to_terminal_init (struct target_ops *self);
145
146 static void debug_to_terminal_inferior (struct target_ops *self);
147
148 static void debug_to_terminal_ours_for_output (struct target_ops *self);
149
150 static void debug_to_terminal_save_ours (struct target_ops *self);
151
152 static void debug_to_terminal_ours (struct target_ops *self);
153
154 static void debug_to_load (struct target_ops *self, char *, int);
155
156 static int debug_to_can_run (struct target_ops *self);
157
158 static void debug_to_stop (struct target_ops *self, ptid_t);
159
160 /* Pointer to array of target architecture structures; the size of the
161    array; the current index into the array; the allocated size of the
162    array.  */
163 struct target_ops **target_structs;
164 unsigned target_struct_size;
165 unsigned target_struct_allocsize;
166 #define DEFAULT_ALLOCSIZE       10
167
168 /* The initial current target, so that there is always a semi-valid
169    current target.  */
170
171 static struct target_ops dummy_target;
172
173 /* Top of target stack.  */
174
175 static struct target_ops *target_stack;
176
177 /* The target structure we are currently using to talk to a process
178    or file or whatever "inferior" we have.  */
179
180 struct target_ops current_target;
181
182 /* Command list for target.  */
183
184 static struct cmd_list_element *targetlist = NULL;
185
186 /* Nonzero if we should trust readonly sections from the
187    executable when reading memory.  */
188
189 static int trust_readonly = 0;
190
191 /* Nonzero if we should show true memory content including
192    memory breakpoint inserted by gdb.  */
193
194 static int show_memory_breakpoints = 0;
195
196 /* These globals control whether GDB attempts to perform these
197    operations; they are useful for targets that need to prevent
198    inadvertant disruption, such as in non-stop mode.  */
199
200 int may_write_registers = 1;
201
202 int may_write_memory = 1;
203
204 int may_insert_breakpoints = 1;
205
206 int may_insert_tracepoints = 1;
207
208 int may_insert_fast_tracepoints = 1;
209
210 int may_stop = 1;
211
212 /* Non-zero if we want to see trace of target level stuff.  */
213
214 static unsigned int targetdebug = 0;
215 static void
216 show_targetdebug (struct ui_file *file, int from_tty,
217                   struct cmd_list_element *c, const char *value)
218 {
219   fprintf_filtered (file, _("Target debugging is %s.\n"), value);
220 }
221
222 static void setup_target_debug (void);
223
224 /* The user just typed 'target' without the name of a target.  */
225
226 static void
227 target_command (char *arg, int from_tty)
228 {
229   fputs_filtered ("Argument required (target name).  Try `help target'\n",
230                   gdb_stdout);
231 }
232
233 /* Default target_has_* methods for process_stratum targets.  */
234
235 int
236 default_child_has_all_memory (struct target_ops *ops)
237 {
238   /* If no inferior selected, then we can't read memory here.  */
239   if (ptid_equal (inferior_ptid, null_ptid))
240     return 0;
241
242   return 1;
243 }
244
245 int
246 default_child_has_memory (struct target_ops *ops)
247 {
248   /* If no inferior selected, then we can't read memory here.  */
249   if (ptid_equal (inferior_ptid, null_ptid))
250     return 0;
251
252   return 1;
253 }
254
255 int
256 default_child_has_stack (struct target_ops *ops)
257 {
258   /* If no inferior selected, there's no stack.  */
259   if (ptid_equal (inferior_ptid, null_ptid))
260     return 0;
261
262   return 1;
263 }
264
265 int
266 default_child_has_registers (struct target_ops *ops)
267 {
268   /* Can't read registers from no inferior.  */
269   if (ptid_equal (inferior_ptid, null_ptid))
270     return 0;
271
272   return 1;
273 }
274
275 int
276 default_child_has_execution (struct target_ops *ops, ptid_t the_ptid)
277 {
278   /* If there's no thread selected, then we can't make it run through
279      hoops.  */
280   if (ptid_equal (the_ptid, null_ptid))
281     return 0;
282
283   return 1;
284 }
285
286
287 int
288 target_has_all_memory_1 (void)
289 {
290   struct target_ops *t;
291
292   for (t = current_target.beneath; t != NULL; t = t->beneath)
293     if (t->to_has_all_memory (t))
294       return 1;
295
296   return 0;
297 }
298
299 int
300 target_has_memory_1 (void)
301 {
302   struct target_ops *t;
303
304   for (t = current_target.beneath; t != NULL; t = t->beneath)
305     if (t->to_has_memory (t))
306       return 1;
307
308   return 0;
309 }
310
311 int
312 target_has_stack_1 (void)
313 {
314   struct target_ops *t;
315
316   for (t = current_target.beneath; t != NULL; t = t->beneath)
317     if (t->to_has_stack (t))
318       return 1;
319
320   return 0;
321 }
322
323 int
324 target_has_registers_1 (void)
325 {
326   struct target_ops *t;
327
328   for (t = current_target.beneath; t != NULL; t = t->beneath)
329     if (t->to_has_registers (t))
330       return 1;
331
332   return 0;
333 }
334
335 int
336 target_has_execution_1 (ptid_t the_ptid)
337 {
338   struct target_ops *t;
339
340   for (t = current_target.beneath; t != NULL; t = t->beneath)
341     if (t->to_has_execution (t, the_ptid))
342       return 1;
343
344   return 0;
345 }
346
347 int
348 target_has_execution_current (void)
349 {
350   return target_has_execution_1 (inferior_ptid);
351 }
352
353 /* Complete initialization of T.  This ensures that various fields in
354    T are set, if needed by the target implementation.  */
355
356 void
357 complete_target_initialization (struct target_ops *t)
358 {
359   /* Provide default values for all "must have" methods.  */
360   if (t->to_xfer_partial == NULL)
361     t->to_xfer_partial = default_xfer_partial;
362
363   if (t->to_has_all_memory == NULL)
364     t->to_has_all_memory = (int (*) (struct target_ops *)) return_zero;
365
366   if (t->to_has_memory == NULL)
367     t->to_has_memory = (int (*) (struct target_ops *)) return_zero;
368
369   if (t->to_has_stack == NULL)
370     t->to_has_stack = (int (*) (struct target_ops *)) return_zero;
371
372   if (t->to_has_registers == NULL)
373     t->to_has_registers = (int (*) (struct target_ops *)) return_zero;
374
375   if (t->to_has_execution == NULL)
376     t->to_has_execution = (int (*) (struct target_ops *, ptid_t)) return_zero;
377
378   install_delegators (t);
379 }
380
381 /* Add possible target architecture T to the list and add a new
382    command 'target T->to_shortname'.  Set COMPLETER as the command's
383    completer if not NULL.  */
384
385 void
386 add_target_with_completer (struct target_ops *t,
387                            completer_ftype *completer)
388 {
389   struct cmd_list_element *c;
390
391   complete_target_initialization (t);
392
393   if (!target_structs)
394     {
395       target_struct_allocsize = DEFAULT_ALLOCSIZE;
396       target_structs = (struct target_ops **) xmalloc
397         (target_struct_allocsize * sizeof (*target_structs));
398     }
399   if (target_struct_size >= target_struct_allocsize)
400     {
401       target_struct_allocsize *= 2;
402       target_structs = (struct target_ops **)
403         xrealloc ((char *) target_structs,
404                   target_struct_allocsize * sizeof (*target_structs));
405     }
406   target_structs[target_struct_size++] = t;
407
408   if (targetlist == NULL)
409     add_prefix_cmd ("target", class_run, target_command, _("\
410 Connect to a target machine or process.\n\
411 The first argument is the type or protocol of the target machine.\n\
412 Remaining arguments are interpreted by the target protocol.  For more\n\
413 information on the arguments for a particular protocol, type\n\
414 `help target ' followed by the protocol name."),
415                     &targetlist, "target ", 0, &cmdlist);
416   c = add_cmd (t->to_shortname, no_class, t->to_open, t->to_doc,
417                &targetlist);
418   if (completer != NULL)
419     set_cmd_completer (c, completer);
420 }
421
422 /* Add a possible target architecture to the list.  */
423
424 void
425 add_target (struct target_ops *t)
426 {
427   add_target_with_completer (t, NULL);
428 }
429
430 /* See target.h.  */
431
432 void
433 add_deprecated_target_alias (struct target_ops *t, char *alias)
434 {
435   struct cmd_list_element *c;
436   char *alt;
437
438   /* If we use add_alias_cmd, here, we do not get the deprecated warning,
439      see PR cli/15104.  */
440   c = add_cmd (alias, no_class, t->to_open, t->to_doc, &targetlist);
441   alt = xstrprintf ("target %s", t->to_shortname);
442   deprecate_cmd (c, alt);
443 }
444
445 /* Stub functions */
446
447 void
448 target_ignore (void)
449 {
450 }
451
452 void
453 target_kill (void)
454 {
455   if (targetdebug)
456     fprintf_unfiltered (gdb_stdlog, "target_kill ()\n");
457
458   current_target.to_kill (&current_target);
459 }
460
461 void
462 target_load (char *arg, int from_tty)
463 {
464   target_dcache_invalidate ();
465   (*current_target.to_load) (&current_target, arg, from_tty);
466 }
467
468 void
469 target_create_inferior (char *exec_file, char *args,
470                         char **env, int from_tty)
471 {
472   struct target_ops *t;
473
474   for (t = current_target.beneath; t != NULL; t = t->beneath)
475     {
476       if (t->to_create_inferior != NULL)        
477         {
478           t->to_create_inferior (t, exec_file, args, env, from_tty);
479           if (targetdebug)
480             fprintf_unfiltered (gdb_stdlog,
481                                 "target_create_inferior (%s, %s, xxx, %d)\n",
482                                 exec_file, args, from_tty);
483           return;
484         }
485     }
486
487   internal_error (__FILE__, __LINE__,
488                   _("could not find a target to create inferior"));
489 }
490
491 void
492 target_terminal_inferior (void)
493 {
494   /* A background resume (``run&'') should leave GDB in control of the
495      terminal.  Use target_can_async_p, not target_is_async_p, since at
496      this point the target is not async yet.  However, if sync_execution
497      is not set, we know it will become async prior to resume.  */
498   if (target_can_async_p () && !sync_execution)
499     return;
500
501   /* If GDB is resuming the inferior in the foreground, install
502      inferior's terminal modes.  */
503   (*current_target.to_terminal_inferior) (&current_target);
504 }
505
506 static int
507 nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write,
508           struct target_ops *t)
509 {
510   errno = EIO;                  /* Can't read/write this location.  */
511   return 0;                     /* No bytes handled.  */
512 }
513
514 static void
515 tcomplain (void)
516 {
517   error (_("You can't do that when your target is `%s'"),
518          current_target.to_shortname);
519 }
520
521 void
522 noprocess (void)
523 {
524   error (_("You can't do that without a process to debug."));
525 }
526
527 static void
528 default_terminal_info (struct target_ops *self, const char *args, int from_tty)
529 {
530   printf_unfiltered (_("No saved terminal information.\n"));
531 }
532
533 /* A default implementation for the to_get_ada_task_ptid target method.
534
535    This function builds the PTID by using both LWP and TID as part of
536    the PTID lwp and tid elements.  The pid used is the pid of the
537    inferior_ptid.  */
538
539 static ptid_t
540 default_get_ada_task_ptid (struct target_ops *self, long lwp, long tid)
541 {
542   return ptid_build (ptid_get_pid (inferior_ptid), lwp, tid);
543 }
544
545 static enum exec_direction_kind
546 default_execution_direction (struct target_ops *self)
547 {
548   if (!target_can_execute_reverse)
549     return EXEC_FORWARD;
550   else if (!target_can_async_p ())
551     return EXEC_FORWARD;
552   else
553     gdb_assert_not_reached ("\
554 to_execution_direction must be implemented for reverse async");
555 }
556
557 /* Go through the target stack from top to bottom, copying over zero
558    entries in current_target, then filling in still empty entries.  In
559    effect, we are doing class inheritance through the pushed target
560    vectors.
561
562    NOTE: cagney/2003-10-17: The problem with this inheritance, as it
563    is currently implemented, is that it discards any knowledge of
564    which target an inherited method originally belonged to.
565    Consequently, new new target methods should instead explicitly and
566    locally search the target stack for the target that can handle the
567    request.  */
568
569 static void
570 update_current_target (void)
571 {
572   struct target_ops *t;
573
574   /* First, reset current's contents.  */
575   memset (&current_target, 0, sizeof (current_target));
576
577   /* Install the delegators.  */
578   install_delegators (&current_target);
579
580 #define INHERIT(FIELD, TARGET) \
581       if (!current_target.FIELD) \
582         current_target.FIELD = (TARGET)->FIELD
583
584   for (t = target_stack; t; t = t->beneath)
585     {
586       INHERIT (to_shortname, t);
587       INHERIT (to_longname, t);
588       INHERIT (to_doc, t);
589       /* Do not inherit to_open.  */
590       /* Do not inherit to_close.  */
591       /* Do not inherit to_attach.  */
592       /* Do not inherit to_post_attach.  */
593       INHERIT (to_attach_no_wait, t);
594       /* Do not inherit to_detach.  */
595       /* Do not inherit to_disconnect.  */
596       /* Do not inherit to_resume.  */
597       /* Do not inherit to_wait.  */
598       /* Do not inherit to_fetch_registers.  */
599       /* Do not inherit to_store_registers.  */
600       /* Do not inherit to_prepare_to_store.  */
601       INHERIT (deprecated_xfer_memory, t);
602       /* Do not inherit to_files_info.  */
603       /* Do not inherit to_insert_breakpoint.  */
604       /* Do not inherit to_remove_breakpoint.  */
605       /* Do not inherit to_can_use_hw_breakpoint.  */
606       /* Do not inherit to_insert_hw_breakpoint.  */
607       /* Do not inherit to_remove_hw_breakpoint.  */
608       /* Do not inherit to_ranged_break_num_registers.  */
609       /* Do not inherit to_insert_watchpoint.  */
610       /* Do not inherit to_remove_watchpoint.  */
611       /* Do not inherit to_insert_mask_watchpoint.  */
612       /* Do not inherit to_remove_mask_watchpoint.  */
613       /* Do not inherit to_stopped_data_address.  */
614       INHERIT (to_have_steppable_watchpoint, t);
615       INHERIT (to_have_continuable_watchpoint, t);
616       /* Do not inherit to_stopped_by_watchpoint.  */
617       /* Do not inherit to_watchpoint_addr_within_range.  */
618       /* Do not inherit to_region_ok_for_hw_watchpoint.  */
619       /* Do not inherit to_can_accel_watchpoint_condition.  */
620       /* Do not inherit to_masked_watch_num_registers.  */
621       /* Do not inherit to_terminal_init.  */
622       /* Do not inherit to_terminal_inferior.  */
623       /* Do not inherit to_terminal_ours_for_output.  */
624       /* Do not inherit to_terminal_ours.  */
625       /* Do not inherit to_terminal_save_ours.  */
626       /* Do not inherit to_terminal_info.  */
627       /* Do not inherit to_kill.  */
628       /* Do not inherit to_load.  */
629       /* Do no inherit to_create_inferior.  */
630       /* Do not inherit to_post_startup_inferior.  */
631       /* Do not inherit to_insert_fork_catchpoint.  */
632       /* Do not inherit to_remove_fork_catchpoint.  */
633       /* Do not inherit to_insert_vfork_catchpoint.  */
634       /* Do not inherit to_remove_vfork_catchpoint.  */
635       /* Do not inherit to_follow_fork.  */
636       /* Do not inherit to_insert_exec_catchpoint.  */
637       /* Do not inherit to_remove_exec_catchpoint.  */
638       /* Do not inherit to_set_syscall_catchpoint.  */
639       /* Do not inherit to_has_exited.  */
640       /* Do not inherit to_mourn_inferior.  */
641       INHERIT (to_can_run, t);
642       /* Do not inherit to_pass_signals.  */
643       /* Do not inherit to_program_signals.  */
644       /* Do not inherit to_thread_alive.  */
645       /* Do not inherit to_find_new_threads.  */
646       /* Do not inherit to_pid_to_str.  */
647       /* Do not inherit to_extra_thread_info.  */
648       /* Do not inherit to_thread_name.  */
649       /* Do not inherit to_stop.  */
650       /* Do not inherit to_xfer_partial.  */
651       /* Do not inherit to_rcmd.  */
652       /* Do not inherit to_pid_to_exec_file.  */
653       /* Do not inherit to_log_command.  */
654       INHERIT (to_stratum, t);
655       /* Do not inherit to_has_all_memory.  */
656       /* Do not inherit to_has_memory.  */
657       /* Do not inherit to_has_stack.  */
658       /* Do not inherit to_has_registers.  */
659       /* Do not inherit to_has_execution.  */
660       INHERIT (to_has_thread_control, t);
661       /* Do not inherit to_can_async_p.  */
662       /* Do not inherit to_is_async_p.  */
663       /* Do not inherit to_async.  */
664       /* Do not inherit to_find_memory_regions.  */
665       /* Do not inherit to_make_corefile_notes.  */
666       /* Do not inherit to_get_bookmark.  */
667       /* Do not inherit to_goto_bookmark.  */
668       /* Do not inherit to_get_thread_local_address.  */
669       /* Do not inherit to_can_execute_reverse.  */
670       /* Do not inherit to_execution_direction.  */
671       /* Do not inherit to_thread_architecture.  */
672       /* Do not inherit to_read_description.  */
673       /* Do not inherit to_get_ada_task_ptid.  */
674       /* Do not inherit to_search_memory.  */
675       /* Do not inherit to_supports_multi_process.  */
676       /* Do not inherit to_supports_enable_disable_tracepoint.  */
677       /* Do not inherit to_supports_string_tracing.  */
678       /* Do not inherit to_trace_init.  */
679       /* Do not inherit to_download_tracepoint.  */
680       /* Do not inherit to_can_download_tracepoint.  */
681       /* Do not inherit to_download_trace_state_variable.  */
682       /* Do not inherit to_enable_tracepoint.  */
683       /* Do not inherit to_disable_tracepoint.  */
684       /* Do not inherit to_trace_set_readonly_regions.  */
685       /* Do not inherit to_trace_start.  */
686       /* Do not inherit to_get_trace_status.  */
687       /* Do not inherit to_get_tracepoint_status.  */
688       /* Do not inherit to_trace_stop.  */
689       /* Do not inherit to_trace_find.  */
690       /* Do not inherit to_get_trace_state_variable_value.  */
691       /* Do not inherit to_save_trace_data.  */
692       /* Do not inherit to_upload_tracepoints.  */
693       /* Do not inherit to_upload_trace_state_variables.  */
694       /* Do not inherit to_get_raw_trace_data.  */
695       /* Do not inherit to_get_min_fast_tracepoint_insn_len.  */
696       /* Do not inherit to_set_disconnected_tracing.  */
697       /* Do not inherit to_set_circular_trace_buffer.  */
698       /* Do not inherit to_set_trace_buffer_size.  */
699       /* Do not inherit to_set_trace_notes.  */
700       /* Do not inherit to_get_tib_address.  */
701       /* Do not inherit to_set_permissions.  */
702       /* Do not inherit to_static_tracepoint_marker_at.  */
703       /* Do not inherit to_static_tracepoint_markers_by_strid.  */
704       /* Do not inherit to_traceframe_info.  */
705       /* Do not inherit to_use_agent.  */
706       /* Do not inherit to_can_use_agent.  */
707       /* Do not inherit to_augmented_libraries_svr4_read.  */
708       INHERIT (to_magic, t);
709       /* Do not inherit
710          to_supports_evaluation_of_breakpoint_conditions.  */
711       /* Do not inherit to_can_run_breakpoint_commands.  */
712       /* Do not inherit to_memory_map.  */
713       /* Do not inherit to_flash_erase.  */
714       /* Do not inherit to_flash_done.  */
715     }
716 #undef INHERIT
717
718   /* Clean up a target struct so it no longer has any zero pointers in
719      it.  Some entries are defaulted to a method that print an error,
720      others are hard-wired to a standard recursive default.  */
721
722 #define de_fault(field, value) \
723   if (!current_target.field)               \
724     current_target.field = value
725
726   de_fault (to_open,
727             (void (*) (char *, int))
728             tcomplain);
729   de_fault (to_close,
730             (void (*) (struct target_ops *))
731             target_ignore);
732   de_fault (deprecated_xfer_memory,
733             (int (*) (CORE_ADDR, gdb_byte *, int, int,
734                       struct mem_attrib *, struct target_ops *))
735             nomemory);
736   de_fault (to_can_run,
737             (int (*) (struct target_ops *))
738             return_zero);
739   current_target.to_read_description = NULL;
740
741 #undef de_fault
742
743   /* Finally, position the target-stack beneath the squashed
744      "current_target".  That way code looking for a non-inherited
745      target method can quickly and simply find it.  */
746   current_target.beneath = target_stack;
747
748   if (targetdebug)
749     setup_target_debug ();
750 }
751
752 /* Push a new target type into the stack of the existing target accessors,
753    possibly superseding some of the existing accessors.
754
755    Rather than allow an empty stack, we always have the dummy target at
756    the bottom stratum, so we can call the function vectors without
757    checking them.  */
758
759 void
760 push_target (struct target_ops *t)
761 {
762   struct target_ops **cur;
763
764   /* Check magic number.  If wrong, it probably means someone changed
765      the struct definition, but not all the places that initialize one.  */
766   if (t->to_magic != OPS_MAGIC)
767     {
768       fprintf_unfiltered (gdb_stderr,
769                           "Magic number of %s target struct wrong\n",
770                           t->to_shortname);
771       internal_error (__FILE__, __LINE__,
772                       _("failed internal consistency check"));
773     }
774
775   /* Find the proper stratum to install this target in.  */
776   for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
777     {
778       if ((int) (t->to_stratum) >= (int) (*cur)->to_stratum)
779         break;
780     }
781
782   /* If there's already targets at this stratum, remove them.  */
783   /* FIXME: cagney/2003-10-15: I think this should be popping all
784      targets to CUR, and not just those at this stratum level.  */
785   while ((*cur) != NULL && t->to_stratum == (*cur)->to_stratum)
786     {
787       /* There's already something at this stratum level.  Close it,
788          and un-hook it from the stack.  */
789       struct target_ops *tmp = (*cur);
790
791       (*cur) = (*cur)->beneath;
792       tmp->beneath = NULL;
793       target_close (tmp);
794     }
795
796   /* We have removed all targets in our stratum, now add the new one.  */
797   t->beneath = (*cur);
798   (*cur) = t;
799
800   update_current_target ();
801 }
802
803 /* Remove a target_ops vector from the stack, wherever it may be.
804    Return how many times it was removed (0 or 1).  */
805
806 int
807 unpush_target (struct target_ops *t)
808 {
809   struct target_ops **cur;
810   struct target_ops *tmp;
811
812   if (t->to_stratum == dummy_stratum)
813     internal_error (__FILE__, __LINE__,
814                     _("Attempt to unpush the dummy target"));
815
816   /* Look for the specified target.  Note that we assume that a target
817      can only occur once in the target stack.  */
818
819   for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
820     {
821       if ((*cur) == t)
822         break;
823     }
824
825   /* If we don't find target_ops, quit.  Only open targets should be
826      closed.  */
827   if ((*cur) == NULL)
828     return 0;                   
829
830   /* Unchain the target.  */
831   tmp = (*cur);
832   (*cur) = (*cur)->beneath;
833   tmp->beneath = NULL;
834
835   update_current_target ();
836
837   /* Finally close the target.  Note we do this after unchaining, so
838      any target method calls from within the target_close
839      implementation don't end up in T anymore.  */
840   target_close (t);
841
842   return 1;
843 }
844
845 void
846 pop_all_targets_above (enum strata above_stratum)
847 {
848   while ((int) (current_target.to_stratum) > (int) above_stratum)
849     {
850       if (!unpush_target (target_stack))
851         {
852           fprintf_unfiltered (gdb_stderr,
853                               "pop_all_targets couldn't find target %s\n",
854                               target_stack->to_shortname);
855           internal_error (__FILE__, __LINE__,
856                           _("failed internal consistency check"));
857           break;
858         }
859     }
860 }
861
862 void
863 pop_all_targets (void)
864 {
865   pop_all_targets_above (dummy_stratum);
866 }
867
868 /* Return 1 if T is now pushed in the target stack.  Return 0 otherwise.  */
869
870 int
871 target_is_pushed (struct target_ops *t)
872 {
873   struct target_ops **cur;
874
875   /* Check magic number.  If wrong, it probably means someone changed
876      the struct definition, but not all the places that initialize one.  */
877   if (t->to_magic != OPS_MAGIC)
878     {
879       fprintf_unfiltered (gdb_stderr,
880                           "Magic number of %s target struct wrong\n",
881                           t->to_shortname);
882       internal_error (__FILE__, __LINE__,
883                       _("failed internal consistency check"));
884     }
885
886   for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
887     if (*cur == t)
888       return 1;
889
890   return 0;
891 }
892
893 /* Using the objfile specified in OBJFILE, find the address for the
894    current thread's thread-local storage with offset OFFSET.  */
895 CORE_ADDR
896 target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset)
897 {
898   volatile CORE_ADDR addr = 0;
899   struct target_ops *target;
900
901   for (target = current_target.beneath;
902        target != NULL;
903        target = target->beneath)
904     {
905       if (target->to_get_thread_local_address != NULL)
906         break;
907     }
908
909   if (target != NULL
910       && gdbarch_fetch_tls_load_module_address_p (target_gdbarch ()))
911     {
912       ptid_t ptid = inferior_ptid;
913       volatile struct gdb_exception ex;
914
915       TRY_CATCH (ex, RETURN_MASK_ALL)
916         {
917           CORE_ADDR lm_addr;
918           
919           /* Fetch the load module address for this objfile.  */
920           lm_addr = gdbarch_fetch_tls_load_module_address (target_gdbarch (),
921                                                            objfile);
922           /* If it's 0, throw the appropriate exception.  */
923           if (lm_addr == 0)
924             throw_error (TLS_LOAD_MODULE_NOT_FOUND_ERROR,
925                          _("TLS load module not found"));
926
927           addr = target->to_get_thread_local_address (target, ptid,
928                                                       lm_addr, offset);
929         }
930       /* If an error occurred, print TLS related messages here.  Otherwise,
931          throw the error to some higher catcher.  */
932       if (ex.reason < 0)
933         {
934           int objfile_is_library = (objfile->flags & OBJF_SHARED);
935
936           switch (ex.error)
937             {
938             case TLS_NO_LIBRARY_SUPPORT_ERROR:
939               error (_("Cannot find thread-local variables "
940                        "in this thread library."));
941               break;
942             case TLS_LOAD_MODULE_NOT_FOUND_ERROR:
943               if (objfile_is_library)
944                 error (_("Cannot find shared library `%s' in dynamic"
945                          " linker's load module list"), objfile_name (objfile));
946               else
947                 error (_("Cannot find executable file `%s' in dynamic"
948                          " linker's load module list"), objfile_name (objfile));
949               break;
950             case TLS_NOT_ALLOCATED_YET_ERROR:
951               if (objfile_is_library)
952                 error (_("The inferior has not yet allocated storage for"
953                          " thread-local variables in\n"
954                          "the shared library `%s'\n"
955                          "for %s"),
956                        objfile_name (objfile), target_pid_to_str (ptid));
957               else
958                 error (_("The inferior has not yet allocated storage for"
959                          " thread-local variables in\n"
960                          "the executable `%s'\n"
961                          "for %s"),
962                        objfile_name (objfile), target_pid_to_str (ptid));
963               break;
964             case TLS_GENERIC_ERROR:
965               if (objfile_is_library)
966                 error (_("Cannot find thread-local storage for %s, "
967                          "shared library %s:\n%s"),
968                        target_pid_to_str (ptid),
969                        objfile_name (objfile), ex.message);
970               else
971                 error (_("Cannot find thread-local storage for %s, "
972                          "executable file %s:\n%s"),
973                        target_pid_to_str (ptid),
974                        objfile_name (objfile), ex.message);
975               break;
976             default:
977               throw_exception (ex);
978               break;
979             }
980         }
981     }
982   /* It wouldn't be wrong here to try a gdbarch method, too; finding
983      TLS is an ABI-specific thing.  But we don't do that yet.  */
984   else
985     error (_("Cannot find thread-local variables on this target"));
986
987   return addr;
988 }
989
990 const char *
991 target_xfer_status_to_string (enum target_xfer_status err)
992 {
993 #define CASE(X) case X: return #X
994   switch (err)
995     {
996       CASE(TARGET_XFER_E_IO);
997       CASE(TARGET_XFER_E_UNAVAILABLE);
998     default:
999       return "<unknown>";
1000     }
1001 #undef CASE
1002 };
1003
1004
1005 #undef  MIN
1006 #define MIN(A, B) (((A) <= (B)) ? (A) : (B))
1007
1008 /* target_read_string -- read a null terminated string, up to LEN bytes,
1009    from MEMADDR in target.  Set *ERRNOP to the errno code, or 0 if successful.
1010    Set *STRING to a pointer to malloc'd memory containing the data; the caller
1011    is responsible for freeing it.  Return the number of bytes successfully
1012    read.  */
1013
1014 int
1015 target_read_string (CORE_ADDR memaddr, char **string, int len, int *errnop)
1016 {
1017   int tlen, offset, i;
1018   gdb_byte buf[4];
1019   int errcode = 0;
1020   char *buffer;
1021   int buffer_allocated;
1022   char *bufptr;
1023   unsigned int nbytes_read = 0;
1024
1025   gdb_assert (string);
1026
1027   /* Small for testing.  */
1028   buffer_allocated = 4;
1029   buffer = xmalloc (buffer_allocated);
1030   bufptr = buffer;
1031
1032   while (len > 0)
1033     {
1034       tlen = MIN (len, 4 - (memaddr & 3));
1035       offset = memaddr & 3;
1036
1037       errcode = target_read_memory (memaddr & ~3, buf, sizeof buf);
1038       if (errcode != 0)
1039         {
1040           /* The transfer request might have crossed the boundary to an
1041              unallocated region of memory.  Retry the transfer, requesting
1042              a single byte.  */
1043           tlen = 1;
1044           offset = 0;
1045           errcode = target_read_memory (memaddr, buf, 1);
1046           if (errcode != 0)
1047             goto done;
1048         }
1049
1050       if (bufptr - buffer + tlen > buffer_allocated)
1051         {
1052           unsigned int bytes;
1053
1054           bytes = bufptr - buffer;
1055           buffer_allocated *= 2;
1056           buffer = xrealloc (buffer, buffer_allocated);
1057           bufptr = buffer + bytes;
1058         }
1059
1060       for (i = 0; i < tlen; i++)
1061         {
1062           *bufptr++ = buf[i + offset];
1063           if (buf[i + offset] == '\000')
1064             {
1065               nbytes_read += i + 1;
1066               goto done;
1067             }
1068         }
1069
1070       memaddr += tlen;
1071       len -= tlen;
1072       nbytes_read += tlen;
1073     }
1074 done:
1075   *string = buffer;
1076   if (errnop != NULL)
1077     *errnop = errcode;
1078   return nbytes_read;
1079 }
1080
1081 struct target_section_table *
1082 target_get_section_table (struct target_ops *target)
1083 {
1084   struct target_ops *t;
1085
1086   if (targetdebug)
1087     fprintf_unfiltered (gdb_stdlog, "target_get_section_table ()\n");
1088
1089   for (t = target; t != NULL; t = t->beneath)
1090     if (t->to_get_section_table != NULL)
1091       return (*t->to_get_section_table) (t);
1092
1093   return NULL;
1094 }
1095
1096 /* Find a section containing ADDR.  */
1097
1098 struct target_section *
1099 target_section_by_addr (struct target_ops *target, CORE_ADDR addr)
1100 {
1101   struct target_section_table *table = target_get_section_table (target);
1102   struct target_section *secp;
1103
1104   if (table == NULL)
1105     return NULL;
1106
1107   for (secp = table->sections; secp < table->sections_end; secp++)
1108     {
1109       if (addr >= secp->addr && addr < secp->endaddr)
1110         return secp;
1111     }
1112   return NULL;
1113 }
1114
1115 /* Read memory from the live target, even if currently inspecting a
1116    traceframe.  The return is the same as that of target_read.  */
1117
1118 static enum target_xfer_status
1119 target_read_live_memory (enum target_object object,
1120                          ULONGEST memaddr, gdb_byte *myaddr, ULONGEST len,
1121                          ULONGEST *xfered_len)
1122 {
1123   enum target_xfer_status ret;
1124   struct cleanup *cleanup;
1125
1126   /* Switch momentarily out of tfind mode so to access live memory.
1127      Note that this must not clear global state, such as the frame
1128      cache, which must still remain valid for the previous traceframe.
1129      We may be _building_ the frame cache at this point.  */
1130   cleanup = make_cleanup_restore_traceframe_number ();
1131   set_traceframe_number (-1);
1132
1133   ret = target_xfer_partial (current_target.beneath, object, NULL,
1134                              myaddr, NULL, memaddr, len, xfered_len);
1135
1136   do_cleanups (cleanup);
1137   return ret;
1138 }
1139
1140 /* Using the set of read-only target sections of OPS, read live
1141    read-only memory.  Note that the actual reads start from the
1142    top-most target again.
1143
1144    For interface/parameters/return description see target.h,
1145    to_xfer_partial.  */
1146
1147 static enum target_xfer_status
1148 memory_xfer_live_readonly_partial (struct target_ops *ops,
1149                                    enum target_object object,
1150                                    gdb_byte *readbuf, ULONGEST memaddr,
1151                                    ULONGEST len, ULONGEST *xfered_len)
1152 {
1153   struct target_section *secp;
1154   struct target_section_table *table;
1155
1156   secp = target_section_by_addr (ops, memaddr);
1157   if (secp != NULL
1158       && (bfd_get_section_flags (secp->the_bfd_section->owner,
1159                                  secp->the_bfd_section)
1160           & SEC_READONLY))
1161     {
1162       struct target_section *p;
1163       ULONGEST memend = memaddr + len;
1164
1165       table = target_get_section_table (ops);
1166
1167       for (p = table->sections; p < table->sections_end; p++)
1168         {
1169           if (memaddr >= p->addr)
1170             {
1171               if (memend <= p->endaddr)
1172                 {
1173                   /* Entire transfer is within this section.  */
1174                   return target_read_live_memory (object, memaddr,
1175                                                   readbuf, len, xfered_len);
1176                 }
1177               else if (memaddr >= p->endaddr)
1178                 {
1179                   /* This section ends before the transfer starts.  */
1180                   continue;
1181                 }
1182               else
1183                 {
1184                   /* This section overlaps the transfer.  Just do half.  */
1185                   len = p->endaddr - memaddr;
1186                   return target_read_live_memory (object, memaddr,
1187                                                   readbuf, len, xfered_len);
1188                 }
1189             }
1190         }
1191     }
1192
1193   return TARGET_XFER_EOF;
1194 }
1195
1196 /* Read memory from more than one valid target.  A core file, for
1197    instance, could have some of memory but delegate other bits to
1198    the target below it.  So, we must manually try all targets.  */
1199
1200 static enum target_xfer_status
1201 raw_memory_xfer_partial (struct target_ops *ops, gdb_byte *readbuf,
1202                          const gdb_byte *writebuf, ULONGEST memaddr, LONGEST len,
1203                          ULONGEST *xfered_len)
1204 {
1205   enum target_xfer_status res;
1206
1207   do
1208     {
1209       res = ops->to_xfer_partial (ops, TARGET_OBJECT_MEMORY, NULL,
1210                                   readbuf, writebuf, memaddr, len,
1211                                   xfered_len);
1212       if (res == TARGET_XFER_OK)
1213         break;
1214
1215       /* Stop if the target reports that the memory is not available.  */
1216       if (res == TARGET_XFER_E_UNAVAILABLE)
1217         break;
1218
1219       /* We want to continue past core files to executables, but not
1220          past a running target's memory.  */
1221       if (ops->to_has_all_memory (ops))
1222         break;
1223
1224       ops = ops->beneath;
1225     }
1226   while (ops != NULL);
1227
1228   return res;
1229 }
1230
1231 /* Perform a partial memory transfer.
1232    For docs see target.h, to_xfer_partial.  */
1233
1234 static enum target_xfer_status
1235 memory_xfer_partial_1 (struct target_ops *ops, enum target_object object,
1236                        gdb_byte *readbuf, const gdb_byte *writebuf, ULONGEST memaddr,
1237                        ULONGEST len, ULONGEST *xfered_len)
1238 {
1239   enum target_xfer_status res;
1240   int reg_len;
1241   struct mem_region *region;
1242   struct inferior *inf;
1243
1244   /* For accesses to unmapped overlay sections, read directly from
1245      files.  Must do this first, as MEMADDR may need adjustment.  */
1246   if (readbuf != NULL && overlay_debugging)
1247     {
1248       struct obj_section *section = find_pc_overlay (memaddr);
1249
1250       if (pc_in_unmapped_range (memaddr, section))
1251         {
1252           struct target_section_table *table
1253             = target_get_section_table (ops);
1254           const char *section_name = section->the_bfd_section->name;
1255
1256           memaddr = overlay_mapped_address (memaddr, section);
1257           return section_table_xfer_memory_partial (readbuf, writebuf,
1258                                                     memaddr, len, xfered_len,
1259                                                     table->sections,
1260                                                     table->sections_end,
1261                                                     section_name);
1262         }
1263     }
1264
1265   /* Try the executable files, if "trust-readonly-sections" is set.  */
1266   if (readbuf != NULL && trust_readonly)
1267     {
1268       struct target_section *secp;
1269       struct target_section_table *table;
1270
1271       secp = target_section_by_addr (ops, memaddr);
1272       if (secp != NULL
1273           && (bfd_get_section_flags (secp->the_bfd_section->owner,
1274                                      secp->the_bfd_section)
1275               & SEC_READONLY))
1276         {
1277           table = target_get_section_table (ops);
1278           return section_table_xfer_memory_partial (readbuf, writebuf,
1279                                                     memaddr, len, xfered_len,
1280                                                     table->sections,
1281                                                     table->sections_end,
1282                                                     NULL);
1283         }
1284     }
1285
1286   /* If reading unavailable memory in the context of traceframes, and
1287      this address falls within a read-only section, fallback to
1288      reading from live memory.  */
1289   if (readbuf != NULL && get_traceframe_number () != -1)
1290     {
1291       VEC(mem_range_s) *available;
1292
1293       /* If we fail to get the set of available memory, then the
1294          target does not support querying traceframe info, and so we
1295          attempt reading from the traceframe anyway (assuming the
1296          target implements the old QTro packet then).  */
1297       if (traceframe_available_memory (&available, memaddr, len))
1298         {
1299           struct cleanup *old_chain;
1300
1301           old_chain = make_cleanup (VEC_cleanup(mem_range_s), &available);
1302
1303           if (VEC_empty (mem_range_s, available)
1304               || VEC_index (mem_range_s, available, 0)->start != memaddr)
1305             {
1306               /* Don't read into the traceframe's available
1307                  memory.  */
1308               if (!VEC_empty (mem_range_s, available))
1309                 {
1310                   LONGEST oldlen = len;
1311
1312                   len = VEC_index (mem_range_s, available, 0)->start - memaddr;
1313                   gdb_assert (len <= oldlen);
1314                 }
1315
1316               do_cleanups (old_chain);
1317
1318               /* This goes through the topmost target again.  */
1319               res = memory_xfer_live_readonly_partial (ops, object,
1320                                                        readbuf, memaddr,
1321                                                        len, xfered_len);
1322               if (res == TARGET_XFER_OK)
1323                 return TARGET_XFER_OK;
1324               else
1325                 {
1326                   /* No use trying further, we know some memory starting
1327                      at MEMADDR isn't available.  */
1328                   *xfered_len = len;
1329                   return TARGET_XFER_E_UNAVAILABLE;
1330                 }
1331             }
1332
1333           /* Don't try to read more than how much is available, in
1334              case the target implements the deprecated QTro packet to
1335              cater for older GDBs (the target's knowledge of read-only
1336              sections may be outdated by now).  */
1337           len = VEC_index (mem_range_s, available, 0)->length;
1338
1339           do_cleanups (old_chain);
1340         }
1341     }
1342
1343   /* Try GDB's internal data cache.  */
1344   region = lookup_mem_region (memaddr);
1345   /* region->hi == 0 means there's no upper bound.  */
1346   if (memaddr + len < region->hi || region->hi == 0)
1347     reg_len = len;
1348   else
1349     reg_len = region->hi - memaddr;
1350
1351   switch (region->attrib.mode)
1352     {
1353     case MEM_RO:
1354       if (writebuf != NULL)
1355         return TARGET_XFER_E_IO;
1356       break;
1357
1358     case MEM_WO:
1359       if (readbuf != NULL)
1360         return TARGET_XFER_E_IO;
1361       break;
1362
1363     case MEM_FLASH:
1364       /* We only support writing to flash during "load" for now.  */
1365       if (writebuf != NULL)
1366         error (_("Writing to flash memory forbidden in this context"));
1367       break;
1368
1369     case MEM_NONE:
1370       return TARGET_XFER_E_IO;
1371     }
1372
1373   if (!ptid_equal (inferior_ptid, null_ptid))
1374     inf = find_inferior_pid (ptid_get_pid (inferior_ptid));
1375   else
1376     inf = NULL;
1377
1378   if (inf != NULL
1379       /* The dcache reads whole cache lines; that doesn't play well
1380          with reading from a trace buffer, because reading outside of
1381          the collected memory range fails.  */
1382       && get_traceframe_number () == -1
1383       && (region->attrib.cache
1384           || (stack_cache_enabled_p () && object == TARGET_OBJECT_STACK_MEMORY)
1385           || (code_cache_enabled_p () && object == TARGET_OBJECT_CODE_MEMORY)))
1386     {
1387       DCACHE *dcache = target_dcache_get_or_init ();
1388       int l;
1389
1390       if (readbuf != NULL)
1391         l = dcache_xfer_memory (ops, dcache, memaddr, readbuf, reg_len, 0);
1392       else
1393         /* FIXME drow/2006-08-09: If we're going to preserve const
1394            correctness dcache_xfer_memory should take readbuf and
1395            writebuf.  */
1396         l = dcache_xfer_memory (ops, dcache, memaddr, (void *) writebuf,
1397                                   reg_len, 1);
1398       if (l <= 0)
1399         return TARGET_XFER_E_IO;
1400       else
1401         {
1402           *xfered_len = (ULONGEST) l;
1403           return TARGET_XFER_OK;
1404         }
1405     }
1406
1407   /* If none of those methods found the memory we wanted, fall back
1408      to a target partial transfer.  Normally a single call to
1409      to_xfer_partial is enough; if it doesn't recognize an object
1410      it will call the to_xfer_partial of the next target down.
1411      But for memory this won't do.  Memory is the only target
1412      object which can be read from more than one valid target.
1413      A core file, for instance, could have some of memory but
1414      delegate other bits to the target below it.  So, we must
1415      manually try all targets.  */
1416
1417   res = raw_memory_xfer_partial (ops, readbuf, writebuf, memaddr, reg_len,
1418                                  xfered_len);
1419
1420   /* Make sure the cache gets updated no matter what - if we are writing
1421      to the stack.  Even if this write is not tagged as such, we still need
1422      to update the cache.  */
1423
1424   if (res == TARGET_XFER_OK
1425       && inf != NULL
1426       && writebuf != NULL
1427       && target_dcache_init_p ()
1428       && !region->attrib.cache
1429       && ((stack_cache_enabled_p () && object != TARGET_OBJECT_STACK_MEMORY)
1430           || (code_cache_enabled_p () && object != TARGET_OBJECT_CODE_MEMORY)))
1431     {
1432       DCACHE *dcache = target_dcache_get ();
1433
1434       dcache_update (dcache, memaddr, (void *) writebuf, reg_len);
1435     }
1436
1437   /* If we still haven't got anything, return the last error.  We
1438      give up.  */
1439   return res;
1440 }
1441
1442 /* Perform a partial memory transfer.  For docs see target.h,
1443    to_xfer_partial.  */
1444
1445 static enum target_xfer_status
1446 memory_xfer_partial (struct target_ops *ops, enum target_object object,
1447                      gdb_byte *readbuf, const gdb_byte *writebuf,
1448                      ULONGEST memaddr, ULONGEST len, ULONGEST *xfered_len)
1449 {
1450   enum target_xfer_status res;
1451
1452   /* Zero length requests are ok and require no work.  */
1453   if (len == 0)
1454     return TARGET_XFER_EOF;
1455
1456   /* Fill in READBUF with breakpoint shadows, or WRITEBUF with
1457      breakpoint insns, thus hiding out from higher layers whether
1458      there are software breakpoints inserted in the code stream.  */
1459   if (readbuf != NULL)
1460     {
1461       res = memory_xfer_partial_1 (ops, object, readbuf, NULL, memaddr, len,
1462                                    xfered_len);
1463
1464       if (res == TARGET_XFER_OK && !show_memory_breakpoints)
1465         breakpoint_xfer_memory (readbuf, NULL, NULL, memaddr, res);
1466     }
1467   else
1468     {
1469       void *buf;
1470       struct cleanup *old_chain;
1471
1472       /* A large write request is likely to be partially satisfied
1473          by memory_xfer_partial_1.  We will continually malloc
1474          and free a copy of the entire write request for breakpoint
1475          shadow handling even though we only end up writing a small
1476          subset of it.  Cap writes to 4KB to mitigate this.  */
1477       len = min (4096, len);
1478
1479       buf = xmalloc (len);
1480       old_chain = make_cleanup (xfree, buf);
1481       memcpy (buf, writebuf, len);
1482
1483       breakpoint_xfer_memory (NULL, buf, writebuf, memaddr, len);
1484       res = memory_xfer_partial_1 (ops, object, NULL, buf, memaddr, len,
1485                                    xfered_len);
1486
1487       do_cleanups (old_chain);
1488     }
1489
1490   return res;
1491 }
1492
1493 static void
1494 restore_show_memory_breakpoints (void *arg)
1495 {
1496   show_memory_breakpoints = (uintptr_t) arg;
1497 }
1498
1499 struct cleanup *
1500 make_show_memory_breakpoints_cleanup (int show)
1501 {
1502   int current = show_memory_breakpoints;
1503
1504   show_memory_breakpoints = show;
1505   return make_cleanup (restore_show_memory_breakpoints,
1506                        (void *) (uintptr_t) current);
1507 }
1508
1509 /* For docs see target.h, to_xfer_partial.  */
1510
1511 enum target_xfer_status
1512 target_xfer_partial (struct target_ops *ops,
1513                      enum target_object object, const char *annex,
1514                      gdb_byte *readbuf, const gdb_byte *writebuf,
1515                      ULONGEST offset, ULONGEST len,
1516                      ULONGEST *xfered_len)
1517 {
1518   enum target_xfer_status retval;
1519
1520   gdb_assert (ops->to_xfer_partial != NULL);
1521
1522   /* Transfer is done when LEN is zero.  */
1523   if (len == 0)
1524     return TARGET_XFER_EOF;
1525
1526   if (writebuf && !may_write_memory)
1527     error (_("Writing to memory is not allowed (addr %s, len %s)"),
1528            core_addr_to_string_nz (offset), plongest (len));
1529
1530   *xfered_len = 0;
1531
1532   /* If this is a memory transfer, let the memory-specific code
1533      have a look at it instead.  Memory transfers are more
1534      complicated.  */
1535   if (object == TARGET_OBJECT_MEMORY || object == TARGET_OBJECT_STACK_MEMORY
1536       || object == TARGET_OBJECT_CODE_MEMORY)
1537     retval = memory_xfer_partial (ops, object, readbuf,
1538                                   writebuf, offset, len, xfered_len);
1539   else if (object == TARGET_OBJECT_RAW_MEMORY)
1540     {
1541       /* Request the normal memory object from other layers.  */
1542       retval = raw_memory_xfer_partial (ops, readbuf, writebuf, offset, len,
1543                                         xfered_len);
1544     }
1545   else
1546     retval = ops->to_xfer_partial (ops, object, annex, readbuf,
1547                                    writebuf, offset, len, xfered_len);
1548
1549   if (targetdebug)
1550     {
1551       const unsigned char *myaddr = NULL;
1552
1553       fprintf_unfiltered (gdb_stdlog,
1554                           "%s:target_xfer_partial "
1555                           "(%d, %s, %s, %s, %s, %s) = %d, %s",
1556                           ops->to_shortname,
1557                           (int) object,
1558                           (annex ? annex : "(null)"),
1559                           host_address_to_string (readbuf),
1560                           host_address_to_string (writebuf),
1561                           core_addr_to_string_nz (offset),
1562                           pulongest (len), retval,
1563                           pulongest (*xfered_len));
1564
1565       if (readbuf)
1566         myaddr = readbuf;
1567       if (writebuf)
1568         myaddr = writebuf;
1569       if (retval == TARGET_XFER_OK && myaddr != NULL)
1570         {
1571           int i;
1572
1573           fputs_unfiltered (", bytes =", gdb_stdlog);
1574           for (i = 0; i < *xfered_len; i++)
1575             {
1576               if ((((intptr_t) &(myaddr[i])) & 0xf) == 0)
1577                 {
1578                   if (targetdebug < 2 && i > 0)
1579                     {
1580                       fprintf_unfiltered (gdb_stdlog, " ...");
1581                       break;
1582                     }
1583                   fprintf_unfiltered (gdb_stdlog, "\n");
1584                 }
1585
1586               fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
1587             }
1588         }
1589
1590       fputc_unfiltered ('\n', gdb_stdlog);
1591     }
1592
1593   /* Check implementations of to_xfer_partial update *XFERED_LEN
1594      properly.  Do assertion after printing debug messages, so that we
1595      can find more clues on assertion failure from debugging messages.  */
1596   if (retval == TARGET_XFER_OK || retval == TARGET_XFER_E_UNAVAILABLE)
1597     gdb_assert (*xfered_len > 0);
1598
1599   return retval;
1600 }
1601
1602 /* Read LEN bytes of target memory at address MEMADDR, placing the
1603    results in GDB's memory at MYADDR.  Returns either 0 for success or
1604    TARGET_XFER_E_IO if any error occurs.
1605
1606    If an error occurs, no guarantee is made about the contents of the data at
1607    MYADDR.  In particular, the caller should not depend upon partial reads
1608    filling the buffer with good data.  There is no way for the caller to know
1609    how much good data might have been transfered anyway.  Callers that can
1610    deal with partial reads should call target_read (which will retry until
1611    it makes no progress, and then return how much was transferred).  */
1612
1613 int
1614 target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
1615 {
1616   /* Dispatch to the topmost target, not the flattened current_target.
1617      Memory accesses check target->to_has_(all_)memory, and the
1618      flattened target doesn't inherit those.  */
1619   if (target_read (current_target.beneath, TARGET_OBJECT_MEMORY, NULL,
1620                    myaddr, memaddr, len) == len)
1621     return 0;
1622   else
1623     return TARGET_XFER_E_IO;
1624 }
1625
1626 /* Like target_read_memory, but specify explicitly that this is a read
1627    from the target's raw memory.  That is, this read bypasses the
1628    dcache, breakpoint shadowing, etc.  */
1629
1630 int
1631 target_read_raw_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
1632 {
1633   /* See comment in target_read_memory about why the request starts at
1634      current_target.beneath.  */
1635   if (target_read (current_target.beneath, TARGET_OBJECT_RAW_MEMORY, NULL,
1636                    myaddr, memaddr, len) == len)
1637     return 0;
1638   else
1639     return TARGET_XFER_E_IO;
1640 }
1641
1642 /* Like target_read_memory, but specify explicitly that this is a read from
1643    the target's stack.  This may trigger different cache behavior.  */
1644
1645 int
1646 target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
1647 {
1648   /* See comment in target_read_memory about why the request starts at
1649      current_target.beneath.  */
1650   if (target_read (current_target.beneath, TARGET_OBJECT_STACK_MEMORY, NULL,
1651                    myaddr, memaddr, len) == len)
1652     return 0;
1653   else
1654     return TARGET_XFER_E_IO;
1655 }
1656
1657 /* Like target_read_memory, but specify explicitly that this is a read from
1658    the target's code.  This may trigger different cache behavior.  */
1659
1660 int
1661 target_read_code (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
1662 {
1663   /* See comment in target_read_memory about why the request starts at
1664      current_target.beneath.  */
1665   if (target_read (current_target.beneath, TARGET_OBJECT_CODE_MEMORY, NULL,
1666                    myaddr, memaddr, len) == len)
1667     return 0;
1668   else
1669     return TARGET_XFER_E_IO;
1670 }
1671
1672 /* Write LEN bytes from MYADDR to target memory at address MEMADDR.
1673    Returns either 0 for success or TARGET_XFER_E_IO if any
1674    error occurs.  If an error occurs, no guarantee is made about how
1675    much data got written.  Callers that can deal with partial writes
1676    should call target_write.  */
1677
1678 int
1679 target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len)
1680 {
1681   /* See comment in target_read_memory about why the request starts at
1682      current_target.beneath.  */
1683   if (target_write (current_target.beneath, TARGET_OBJECT_MEMORY, NULL,
1684                     myaddr, memaddr, len) == len)
1685     return 0;
1686   else
1687     return TARGET_XFER_E_IO;
1688 }
1689
1690 /* Write LEN bytes from MYADDR to target raw memory at address
1691    MEMADDR.  Returns either 0 for success or TARGET_XFER_E_IO
1692    if any error occurs.  If an error occurs, no guarantee is made
1693    about how much data got written.  Callers that can deal with
1694    partial writes should call target_write.  */
1695
1696 int
1697 target_write_raw_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len)
1698 {
1699   /* See comment in target_read_memory about why the request starts at
1700      current_target.beneath.  */
1701   if (target_write (current_target.beneath, TARGET_OBJECT_RAW_MEMORY, NULL,
1702                     myaddr, memaddr, len) == len)
1703     return 0;
1704   else
1705     return TARGET_XFER_E_IO;
1706 }
1707
1708 /* Fetch the target's memory map.  */
1709
1710 VEC(mem_region_s) *
1711 target_memory_map (void)
1712 {
1713   VEC(mem_region_s) *result;
1714   struct mem_region *last_one, *this_one;
1715   int ix;
1716   struct target_ops *t;
1717
1718   if (targetdebug)
1719     fprintf_unfiltered (gdb_stdlog, "target_memory_map ()\n");
1720
1721   for (t = current_target.beneath; t != NULL; t = t->beneath)
1722     if (t->to_memory_map != NULL)
1723       break;
1724
1725   if (t == NULL)
1726     return NULL;
1727
1728   result = t->to_memory_map (t);
1729   if (result == NULL)
1730     return NULL;
1731
1732   qsort (VEC_address (mem_region_s, result),
1733          VEC_length (mem_region_s, result),
1734          sizeof (struct mem_region), mem_region_cmp);
1735
1736   /* Check that regions do not overlap.  Simultaneously assign
1737      a numbering for the "mem" commands to use to refer to
1738      each region.  */
1739   last_one = NULL;
1740   for (ix = 0; VEC_iterate (mem_region_s, result, ix, this_one); ix++)
1741     {
1742       this_one->number = ix;
1743
1744       if (last_one && last_one->hi > this_one->lo)
1745         {
1746           warning (_("Overlapping regions in memory map: ignoring"));
1747           VEC_free (mem_region_s, result);
1748           return NULL;
1749         }
1750       last_one = this_one;
1751     }
1752
1753   return result;
1754 }
1755
1756 void
1757 target_flash_erase (ULONGEST address, LONGEST length)
1758 {
1759   struct target_ops *t;
1760
1761   for (t = current_target.beneath; t != NULL; t = t->beneath)
1762     if (t->to_flash_erase != NULL)
1763       {
1764         if (targetdebug)
1765           fprintf_unfiltered (gdb_stdlog, "target_flash_erase (%s, %s)\n",
1766                               hex_string (address), phex (length, 0));
1767         t->to_flash_erase (t, address, length);
1768         return;
1769       }
1770
1771   tcomplain ();
1772 }
1773
1774 void
1775 target_flash_done (void)
1776 {
1777   struct target_ops *t;
1778
1779   for (t = current_target.beneath; t != NULL; t = t->beneath)
1780     if (t->to_flash_done != NULL)
1781       {
1782         if (targetdebug)
1783           fprintf_unfiltered (gdb_stdlog, "target_flash_done\n");
1784         t->to_flash_done (t);
1785         return;
1786       }
1787
1788   tcomplain ();
1789 }
1790
1791 static void
1792 show_trust_readonly (struct ui_file *file, int from_tty,
1793                      struct cmd_list_element *c, const char *value)
1794 {
1795   fprintf_filtered (file,
1796                     _("Mode for reading from readonly sections is %s.\n"),
1797                     value);
1798 }
1799
1800 /* More generic transfers.  */
1801
1802 static enum target_xfer_status
1803 default_xfer_partial (struct target_ops *ops, enum target_object object,
1804                       const char *annex, gdb_byte *readbuf,
1805                       const gdb_byte *writebuf, ULONGEST offset, ULONGEST len,
1806                       ULONGEST *xfered_len)
1807 {
1808   if (object == TARGET_OBJECT_MEMORY
1809       && ops->deprecated_xfer_memory != NULL)
1810     /* If available, fall back to the target's
1811        "deprecated_xfer_memory" method.  */
1812     {
1813       int xfered = -1;
1814
1815       errno = 0;
1816       if (writebuf != NULL)
1817         {
1818           void *buffer = xmalloc (len);
1819           struct cleanup *cleanup = make_cleanup (xfree, buffer);
1820
1821           memcpy (buffer, writebuf, len);
1822           xfered = ops->deprecated_xfer_memory (offset, buffer, len,
1823                                                 1/*write*/, NULL, ops);
1824           do_cleanups (cleanup);
1825         }
1826       if (readbuf != NULL)
1827         xfered = ops->deprecated_xfer_memory (offset, readbuf, len, 
1828                                               0/*read*/, NULL, ops);
1829       if (xfered > 0)
1830         {
1831           *xfered_len = (ULONGEST) xfered;
1832           return TARGET_XFER_E_IO;
1833         }
1834       else if (xfered == 0 && errno == 0)
1835         /* "deprecated_xfer_memory" uses 0, cross checked against
1836            ERRNO as one indication of an error.  */
1837         return TARGET_XFER_EOF;
1838       else
1839         return TARGET_XFER_E_IO;
1840     }
1841   else
1842     {
1843       gdb_assert (ops->beneath != NULL);
1844       return ops->beneath->to_xfer_partial (ops->beneath, object, annex,
1845                                             readbuf, writebuf, offset, len,
1846                                             xfered_len);
1847     }
1848 }
1849
1850 /* Target vector read/write partial wrapper functions.  */
1851
1852 static enum target_xfer_status
1853 target_read_partial (struct target_ops *ops,
1854                      enum target_object object,
1855                      const char *annex, gdb_byte *buf,
1856                      ULONGEST offset, ULONGEST len,
1857                      ULONGEST *xfered_len)
1858 {
1859   return target_xfer_partial (ops, object, annex, buf, NULL, offset, len,
1860                               xfered_len);
1861 }
1862
1863 static enum target_xfer_status
1864 target_write_partial (struct target_ops *ops,
1865                       enum target_object object,
1866                       const char *annex, const gdb_byte *buf,
1867                       ULONGEST offset, LONGEST len, ULONGEST *xfered_len)
1868 {
1869   return target_xfer_partial (ops, object, annex, NULL, buf, offset, len,
1870                               xfered_len);
1871 }
1872
1873 /* Wrappers to perform the full transfer.  */
1874
1875 /* For docs on target_read see target.h.  */
1876
1877 LONGEST
1878 target_read (struct target_ops *ops,
1879              enum target_object object,
1880              const char *annex, gdb_byte *buf,
1881              ULONGEST offset, LONGEST len)
1882 {
1883   LONGEST xfered = 0;
1884
1885   while (xfered < len)
1886     {
1887       ULONGEST xfered_len;
1888       enum target_xfer_status status;
1889
1890       status = target_read_partial (ops, object, annex,
1891                                     (gdb_byte *) buf + xfered,
1892                                     offset + xfered, len - xfered,
1893                                     &xfered_len);
1894
1895       /* Call an observer, notifying them of the xfer progress?  */
1896       if (status == TARGET_XFER_EOF)
1897         return xfered;
1898       else if (status == TARGET_XFER_OK)
1899         {
1900           xfered += xfered_len;
1901           QUIT;
1902         }
1903       else
1904         return -1;
1905
1906     }
1907   return len;
1908 }
1909
1910 /* Assuming that the entire [begin, end) range of memory cannot be
1911    read, try to read whatever subrange is possible to read.
1912
1913    The function returns, in RESULT, either zero or one memory block.
1914    If there's a readable subrange at the beginning, it is completely
1915    read and returned.  Any further readable subrange will not be read.
1916    Otherwise, if there's a readable subrange at the end, it will be
1917    completely read and returned.  Any readable subranges before it
1918    (obviously, not starting at the beginning), will be ignored.  In
1919    other cases -- either no readable subrange, or readable subrange(s)
1920    that is neither at the beginning, or end, nothing is returned.
1921
1922    The purpose of this function is to handle a read across a boundary
1923    of accessible memory in a case when memory map is not available.
1924    The above restrictions are fine for this case, but will give
1925    incorrect results if the memory is 'patchy'.  However, supporting
1926    'patchy' memory would require trying to read every single byte,
1927    and it seems unacceptable solution.  Explicit memory map is
1928    recommended for this case -- and target_read_memory_robust will
1929    take care of reading multiple ranges then.  */
1930
1931 static void
1932 read_whatever_is_readable (struct target_ops *ops,
1933                            ULONGEST begin, ULONGEST end,
1934                            VEC(memory_read_result_s) **result)
1935 {
1936   gdb_byte *buf = xmalloc (end - begin);
1937   ULONGEST current_begin = begin;
1938   ULONGEST current_end = end;
1939   int forward;
1940   memory_read_result_s r;
1941   ULONGEST xfered_len;
1942
1943   /* If we previously failed to read 1 byte, nothing can be done here.  */
1944   if (end - begin <= 1)
1945     {
1946       xfree (buf);
1947       return;
1948     }
1949
1950   /* Check that either first or the last byte is readable, and give up
1951      if not.  This heuristic is meant to permit reading accessible memory
1952      at the boundary of accessible region.  */
1953   if (target_read_partial (ops, TARGET_OBJECT_MEMORY, NULL,
1954                            buf, begin, 1, &xfered_len) == TARGET_XFER_OK)
1955     {
1956       forward = 1;
1957       ++current_begin;
1958     }
1959   else if (target_read_partial (ops, TARGET_OBJECT_MEMORY, NULL,
1960                                 buf + (end-begin) - 1, end - 1, 1,
1961                                 &xfered_len) == TARGET_XFER_OK)
1962     {
1963       forward = 0;
1964       --current_end;
1965     }
1966   else
1967     {
1968       xfree (buf);
1969       return;
1970     }
1971
1972   /* Loop invariant is that the [current_begin, current_end) was previously
1973      found to be not readable as a whole.
1974
1975      Note loop condition -- if the range has 1 byte, we can't divide the range
1976      so there's no point trying further.  */
1977   while (current_end - current_begin > 1)
1978     {
1979       ULONGEST first_half_begin, first_half_end;
1980       ULONGEST second_half_begin, second_half_end;
1981       LONGEST xfer;
1982       ULONGEST middle = current_begin + (current_end - current_begin)/2;
1983
1984       if (forward)
1985         {
1986           first_half_begin = current_begin;
1987           first_half_end = middle;
1988           second_half_begin = middle;
1989           second_half_end = current_end;
1990         }
1991       else
1992         {
1993           first_half_begin = middle;
1994           first_half_end = current_end;
1995           second_half_begin = current_begin;
1996           second_half_end = middle;
1997         }
1998
1999       xfer = target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2000                           buf + (first_half_begin - begin),
2001                           first_half_begin,
2002                           first_half_end - first_half_begin);
2003
2004       if (xfer == first_half_end - first_half_begin)
2005         {
2006           /* This half reads up fine.  So, the error must be in the
2007              other half.  */
2008           current_begin = second_half_begin;
2009           current_end = second_half_end;
2010         }
2011       else
2012         {
2013           /* This half is not readable.  Because we've tried one byte, we
2014              know some part of this half if actually redable.  Go to the next
2015              iteration to divide again and try to read.
2016
2017              We don't handle the other half, because this function only tries
2018              to read a single readable subrange.  */
2019           current_begin = first_half_begin;
2020           current_end = first_half_end;
2021         }
2022     }
2023
2024   if (forward)
2025     {
2026       /* The [begin, current_begin) range has been read.  */
2027       r.begin = begin;
2028       r.end = current_begin;
2029       r.data = buf;
2030     }
2031   else
2032     {
2033       /* The [current_end, end) range has been read.  */
2034       LONGEST rlen = end - current_end;
2035
2036       r.data = xmalloc (rlen);
2037       memcpy (r.data, buf + current_end - begin, rlen);
2038       r.begin = current_end;
2039       r.end = end;
2040       xfree (buf);
2041     }
2042   VEC_safe_push(memory_read_result_s, (*result), &r);
2043 }
2044
2045 void
2046 free_memory_read_result_vector (void *x)
2047 {
2048   VEC(memory_read_result_s) *v = x;
2049   memory_read_result_s *current;
2050   int ix;
2051
2052   for (ix = 0; VEC_iterate (memory_read_result_s, v, ix, current); ++ix)
2053     {
2054       xfree (current->data);
2055     }
2056   VEC_free (memory_read_result_s, v);
2057 }
2058
2059 VEC(memory_read_result_s) *
2060 read_memory_robust (struct target_ops *ops, ULONGEST offset, LONGEST len)
2061 {
2062   VEC(memory_read_result_s) *result = 0;
2063
2064   LONGEST xfered = 0;
2065   while (xfered < len)
2066     {
2067       struct mem_region *region = lookup_mem_region (offset + xfered);
2068       LONGEST rlen;
2069
2070       /* If there is no explicit region, a fake one should be created.  */
2071       gdb_assert (region);
2072
2073       if (region->hi == 0)
2074         rlen = len - xfered;
2075       else
2076         rlen = region->hi - offset;
2077
2078       if (region->attrib.mode == MEM_NONE || region->attrib.mode == MEM_WO)
2079         {
2080           /* Cannot read this region.  Note that we can end up here only
2081              if the region is explicitly marked inaccessible, or
2082              'inaccessible-by-default' is in effect.  */
2083           xfered += rlen;
2084         }
2085       else
2086         {
2087           LONGEST to_read = min (len - xfered, rlen);
2088           gdb_byte *buffer = (gdb_byte *)xmalloc (to_read);
2089
2090           LONGEST xfer = target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2091                                       (gdb_byte *) buffer,
2092                                       offset + xfered, to_read);
2093           /* Call an observer, notifying them of the xfer progress?  */
2094           if (xfer <= 0)
2095             {
2096               /* Got an error reading full chunk.  See if maybe we can read
2097                  some subrange.  */
2098               xfree (buffer);
2099               read_whatever_is_readable (ops, offset + xfered,
2100                                          offset + xfered + to_read, &result);
2101               xfered += to_read;
2102             }
2103           else
2104             {
2105               struct memory_read_result r;
2106               r.data = buffer;
2107               r.begin = offset + xfered;
2108               r.end = r.begin + xfer;
2109               VEC_safe_push (memory_read_result_s, result, &r);
2110               xfered += xfer;
2111             }
2112           QUIT;
2113         }
2114     }
2115   return result;
2116 }
2117
2118
2119 /* An alternative to target_write with progress callbacks.  */
2120
2121 LONGEST
2122 target_write_with_progress (struct target_ops *ops,
2123                             enum target_object object,
2124                             const char *annex, const gdb_byte *buf,
2125                             ULONGEST offset, LONGEST len,
2126                             void (*progress) (ULONGEST, void *), void *baton)
2127 {
2128   LONGEST xfered = 0;
2129
2130   /* Give the progress callback a chance to set up.  */
2131   if (progress)
2132     (*progress) (0, baton);
2133
2134   while (xfered < len)
2135     {
2136       ULONGEST xfered_len;
2137       enum target_xfer_status status;
2138
2139       status = target_write_partial (ops, object, annex,
2140                                      (gdb_byte *) buf + xfered,
2141                                      offset + xfered, len - xfered,
2142                                      &xfered_len);
2143
2144       if (status == TARGET_XFER_EOF)
2145         return xfered;
2146       if (TARGET_XFER_STATUS_ERROR_P (status))
2147         return -1;
2148
2149       gdb_assert (status == TARGET_XFER_OK);
2150       if (progress)
2151         (*progress) (xfered_len, baton);
2152
2153       xfered += xfered_len;
2154       QUIT;
2155     }
2156   return len;
2157 }
2158
2159 /* For docs on target_write see target.h.  */
2160
2161 LONGEST
2162 target_write (struct target_ops *ops,
2163               enum target_object object,
2164               const char *annex, const gdb_byte *buf,
2165               ULONGEST offset, LONGEST len)
2166 {
2167   return target_write_with_progress (ops, object, annex, buf, offset, len,
2168                                      NULL, NULL);
2169 }
2170
2171 /* Read OBJECT/ANNEX using OPS.  Store the result in *BUF_P and return
2172    the size of the transferred data.  PADDING additional bytes are
2173    available in *BUF_P.  This is a helper function for
2174    target_read_alloc; see the declaration of that function for more
2175    information.  */
2176
2177 static LONGEST
2178 target_read_alloc_1 (struct target_ops *ops, enum target_object object,
2179                      const char *annex, gdb_byte **buf_p, int padding)
2180 {
2181   size_t buf_alloc, buf_pos;
2182   gdb_byte *buf;
2183
2184   /* This function does not have a length parameter; it reads the
2185      entire OBJECT).  Also, it doesn't support objects fetched partly
2186      from one target and partly from another (in a different stratum,
2187      e.g. a core file and an executable).  Both reasons make it
2188      unsuitable for reading memory.  */
2189   gdb_assert (object != TARGET_OBJECT_MEMORY);
2190
2191   /* Start by reading up to 4K at a time.  The target will throttle
2192      this number down if necessary.  */
2193   buf_alloc = 4096;
2194   buf = xmalloc (buf_alloc);
2195   buf_pos = 0;
2196   while (1)
2197     {
2198       ULONGEST xfered_len;
2199       enum target_xfer_status status;
2200
2201       status = target_read_partial (ops, object, annex, &buf[buf_pos],
2202                                     buf_pos, buf_alloc - buf_pos - padding,
2203                                     &xfered_len);
2204
2205       if (status == TARGET_XFER_EOF)
2206         {
2207           /* Read all there was.  */
2208           if (buf_pos == 0)
2209             xfree (buf);
2210           else
2211             *buf_p = buf;
2212           return buf_pos;
2213         }
2214       else if (status != TARGET_XFER_OK)
2215         {
2216           /* An error occurred.  */
2217           xfree (buf);
2218           return TARGET_XFER_E_IO;
2219         }
2220
2221       buf_pos += xfered_len;
2222
2223       /* If the buffer is filling up, expand it.  */
2224       if (buf_alloc < buf_pos * 2)
2225         {
2226           buf_alloc *= 2;
2227           buf = xrealloc (buf, buf_alloc);
2228         }
2229
2230       QUIT;
2231     }
2232 }
2233
2234 /* Read OBJECT/ANNEX using OPS.  Store the result in *BUF_P and return
2235    the size of the transferred data.  See the declaration in "target.h"
2236    function for more information about the return value.  */
2237
2238 LONGEST
2239 target_read_alloc (struct target_ops *ops, enum target_object object,
2240                    const char *annex, gdb_byte **buf_p)
2241 {
2242   return target_read_alloc_1 (ops, object, annex, buf_p, 0);
2243 }
2244
2245 /* Read OBJECT/ANNEX using OPS.  The result is NUL-terminated and
2246    returned as a string, allocated using xmalloc.  If an error occurs
2247    or the transfer is unsupported, NULL is returned.  Empty objects
2248    are returned as allocated but empty strings.  A warning is issued
2249    if the result contains any embedded NUL bytes.  */
2250
2251 char *
2252 target_read_stralloc (struct target_ops *ops, enum target_object object,
2253                       const char *annex)
2254 {
2255   gdb_byte *buffer;
2256   char *bufstr;
2257   LONGEST i, transferred;
2258
2259   transferred = target_read_alloc_1 (ops, object, annex, &buffer, 1);
2260   bufstr = (char *) buffer;
2261
2262   if (transferred < 0)
2263     return NULL;
2264
2265   if (transferred == 0)
2266     return xstrdup ("");
2267
2268   bufstr[transferred] = 0;
2269
2270   /* Check for embedded NUL bytes; but allow trailing NULs.  */
2271   for (i = strlen (bufstr); i < transferred; i++)
2272     if (bufstr[i] != 0)
2273       {
2274         warning (_("target object %d, annex %s, "
2275                    "contained unexpected null characters"),
2276                  (int) object, annex ? annex : "(none)");
2277         break;
2278       }
2279
2280   return bufstr;
2281 }
2282
2283 /* Memory transfer methods.  */
2284
2285 void
2286 get_target_memory (struct target_ops *ops, CORE_ADDR addr, gdb_byte *buf,
2287                    LONGEST len)
2288 {
2289   /* This method is used to read from an alternate, non-current
2290      target.  This read must bypass the overlay support (as symbols
2291      don't match this target), and GDB's internal cache (wrong cache
2292      for this target).  */
2293   if (target_read (ops, TARGET_OBJECT_RAW_MEMORY, NULL, buf, addr, len)
2294       != len)
2295     memory_error (TARGET_XFER_E_IO, addr);
2296 }
2297
2298 ULONGEST
2299 get_target_memory_unsigned (struct target_ops *ops, CORE_ADDR addr,
2300                             int len, enum bfd_endian byte_order)
2301 {
2302   gdb_byte buf[sizeof (ULONGEST)];
2303
2304   gdb_assert (len <= sizeof (buf));
2305   get_target_memory (ops, addr, buf, len);
2306   return extract_unsigned_integer (buf, len, byte_order);
2307 }
2308
2309 /* See target.h.  */
2310
2311 int
2312 target_insert_breakpoint (struct gdbarch *gdbarch,
2313                           struct bp_target_info *bp_tgt)
2314 {
2315   if (!may_insert_breakpoints)
2316     {
2317       warning (_("May not insert breakpoints"));
2318       return 1;
2319     }
2320
2321   return current_target.to_insert_breakpoint (&current_target,
2322                                               gdbarch, bp_tgt);
2323 }
2324
2325 /* See target.h.  */
2326
2327 int
2328 target_remove_breakpoint (struct gdbarch *gdbarch,
2329                           struct bp_target_info *bp_tgt)
2330 {
2331   /* This is kind of a weird case to handle, but the permission might
2332      have been changed after breakpoints were inserted - in which case
2333      we should just take the user literally and assume that any
2334      breakpoints should be left in place.  */
2335   if (!may_insert_breakpoints)
2336     {
2337       warning (_("May not remove breakpoints"));
2338       return 1;
2339     }
2340
2341   return current_target.to_remove_breakpoint (&current_target,
2342                                               gdbarch, bp_tgt);
2343 }
2344
2345 static void
2346 target_info (char *args, int from_tty)
2347 {
2348   struct target_ops *t;
2349   int has_all_mem = 0;
2350
2351   if (symfile_objfile != NULL)
2352     printf_unfiltered (_("Symbols from \"%s\".\n"),
2353                        objfile_name (symfile_objfile));
2354
2355   for (t = target_stack; t != NULL; t = t->beneath)
2356     {
2357       if (!(*t->to_has_memory) (t))
2358         continue;
2359
2360       if ((int) (t->to_stratum) <= (int) dummy_stratum)
2361         continue;
2362       if (has_all_mem)
2363         printf_unfiltered (_("\tWhile running this, "
2364                              "GDB does not access memory from...\n"));
2365       printf_unfiltered ("%s:\n", t->to_longname);
2366       (t->to_files_info) (t);
2367       has_all_mem = (*t->to_has_all_memory) (t);
2368     }
2369 }
2370
2371 /* This function is called before any new inferior is created, e.g.
2372    by running a program, attaching, or connecting to a target.
2373    It cleans up any state from previous invocations which might
2374    change between runs.  This is a subset of what target_preopen
2375    resets (things which might change between targets).  */
2376
2377 void
2378 target_pre_inferior (int from_tty)
2379 {
2380   /* Clear out solib state.  Otherwise the solib state of the previous
2381      inferior might have survived and is entirely wrong for the new
2382      target.  This has been observed on GNU/Linux using glibc 2.3.  How
2383      to reproduce:
2384
2385      bash$ ./foo&
2386      [1] 4711
2387      bash$ ./foo&
2388      [1] 4712
2389      bash$ gdb ./foo
2390      [...]
2391      (gdb) attach 4711
2392      (gdb) detach
2393      (gdb) attach 4712
2394      Cannot access memory at address 0xdeadbeef
2395   */
2396
2397   /* In some OSs, the shared library list is the same/global/shared
2398      across inferiors.  If code is shared between processes, so are
2399      memory regions and features.  */
2400   if (!gdbarch_has_global_solist (target_gdbarch ()))
2401     {
2402       no_shared_libraries (NULL, from_tty);
2403
2404       invalidate_target_mem_regions ();
2405
2406       target_clear_description ();
2407     }
2408
2409   agent_capability_invalidate ();
2410 }
2411
2412 /* Callback for iterate_over_inferiors.  Gets rid of the given
2413    inferior.  */
2414
2415 static int
2416 dispose_inferior (struct inferior *inf, void *args)
2417 {
2418   struct thread_info *thread;
2419
2420   thread = any_thread_of_process (inf->pid);
2421   if (thread)
2422     {
2423       switch_to_thread (thread->ptid);
2424
2425       /* Core inferiors actually should be detached, not killed.  */
2426       if (target_has_execution)
2427         target_kill ();
2428       else
2429         target_detach (NULL, 0);
2430     }
2431
2432   return 0;
2433 }
2434
2435 /* This is to be called by the open routine before it does
2436    anything.  */
2437
2438 void
2439 target_preopen (int from_tty)
2440 {
2441   dont_repeat ();
2442
2443   if (have_inferiors ())
2444     {
2445       if (!from_tty
2446           || !have_live_inferiors ()
2447           || query (_("A program is being debugged already.  Kill it? ")))
2448         iterate_over_inferiors (dispose_inferior, NULL);
2449       else
2450         error (_("Program not killed."));
2451     }
2452
2453   /* Calling target_kill may remove the target from the stack.  But if
2454      it doesn't (which seems like a win for UDI), remove it now.  */
2455   /* Leave the exec target, though.  The user may be switching from a
2456      live process to a core of the same program.  */
2457   pop_all_targets_above (file_stratum);
2458
2459   target_pre_inferior (from_tty);
2460 }
2461
2462 /* Detach a target after doing deferred register stores.  */
2463
2464 void
2465 target_detach (const char *args, int from_tty)
2466 {
2467   struct target_ops* t;
2468   
2469   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
2470     /* Don't remove global breakpoints here.  They're removed on
2471        disconnection from the target.  */
2472     ;
2473   else
2474     /* If we're in breakpoints-always-inserted mode, have to remove
2475        them before detaching.  */
2476     remove_breakpoints_pid (ptid_get_pid (inferior_ptid));
2477
2478   prepare_for_detach ();
2479
2480   current_target.to_detach (&current_target, args, from_tty);
2481   if (targetdebug)
2482     fprintf_unfiltered (gdb_stdlog, "target_detach (%s, %d)\n",
2483                         args, from_tty);
2484 }
2485
2486 void
2487 target_disconnect (char *args, int from_tty)
2488 {
2489   struct target_ops *t;
2490
2491   /* If we're in breakpoints-always-inserted mode or if breakpoints
2492      are global across processes, we have to remove them before
2493      disconnecting.  */
2494   remove_breakpoints ();
2495
2496   for (t = current_target.beneath; t != NULL; t = t->beneath)
2497     if (t->to_disconnect != NULL)
2498         {
2499           if (targetdebug)
2500             fprintf_unfiltered (gdb_stdlog, "target_disconnect (%s, %d)\n",
2501                                 args, from_tty);
2502           t->to_disconnect (t, args, from_tty);
2503           return;
2504         }
2505
2506   tcomplain ();
2507 }
2508
2509 ptid_t
2510 target_wait (ptid_t ptid, struct target_waitstatus *status, int options)
2511 {
2512   struct target_ops *t;
2513   ptid_t retval = (current_target.to_wait) (&current_target, ptid,
2514                                             status, options);
2515
2516   if (targetdebug)
2517     {
2518       char *status_string;
2519       char *options_string;
2520
2521       status_string = target_waitstatus_to_string (status);
2522       options_string = target_options_to_string (options);
2523       fprintf_unfiltered (gdb_stdlog,
2524                           "target_wait (%d, status, options={%s})"
2525                           " = %d,   %s\n",
2526                           ptid_get_pid (ptid), options_string,
2527                           ptid_get_pid (retval), status_string);
2528       xfree (status_string);
2529       xfree (options_string);
2530     }
2531
2532   return retval;
2533 }
2534
2535 char *
2536 target_pid_to_str (ptid_t ptid)
2537 {
2538   struct target_ops *t;
2539
2540   for (t = current_target.beneath; t != NULL; t = t->beneath)
2541     {
2542       if (t->to_pid_to_str != NULL)
2543         return (*t->to_pid_to_str) (t, ptid);
2544     }
2545
2546   return normal_pid_to_str (ptid);
2547 }
2548
2549 char *
2550 target_thread_name (struct thread_info *info)
2551 {
2552   return current_target.to_thread_name (&current_target, info);
2553 }
2554
2555 void
2556 target_resume (ptid_t ptid, int step, enum gdb_signal signal)
2557 {
2558   struct target_ops *t;
2559
2560   target_dcache_invalidate ();
2561
2562   current_target.to_resume (&current_target, ptid, step, signal);
2563   if (targetdebug)
2564     fprintf_unfiltered (gdb_stdlog, "target_resume (%d, %s, %s)\n",
2565                         ptid_get_pid (ptid),
2566                         step ? "step" : "continue",
2567                         gdb_signal_to_name (signal));
2568
2569   registers_changed_ptid (ptid);
2570   set_executing (ptid, 1);
2571   set_running (ptid, 1);
2572   clear_inline_frame_state (ptid);
2573 }
2574
2575 void
2576 target_pass_signals (int numsigs, unsigned char *pass_signals)
2577 {
2578   struct target_ops *t;
2579
2580   for (t = current_target.beneath; t != NULL; t = t->beneath)
2581     {
2582       if (t->to_pass_signals != NULL)
2583         {
2584           if (targetdebug)
2585             {
2586               int i;
2587
2588               fprintf_unfiltered (gdb_stdlog, "target_pass_signals (%d, {",
2589                                   numsigs);
2590
2591               for (i = 0; i < numsigs; i++)
2592                 if (pass_signals[i])
2593                   fprintf_unfiltered (gdb_stdlog, " %s",
2594                                       gdb_signal_to_name (i));
2595
2596               fprintf_unfiltered (gdb_stdlog, " })\n");
2597             }
2598
2599           (*t->to_pass_signals) (t, numsigs, pass_signals);
2600           return;
2601         }
2602     }
2603 }
2604
2605 void
2606 target_program_signals (int numsigs, unsigned char *program_signals)
2607 {
2608   struct target_ops *t;
2609
2610   for (t = current_target.beneath; t != NULL; t = t->beneath)
2611     {
2612       if (t->to_program_signals != NULL)
2613         {
2614           if (targetdebug)
2615             {
2616               int i;
2617
2618               fprintf_unfiltered (gdb_stdlog, "target_program_signals (%d, {",
2619                                   numsigs);
2620
2621               for (i = 0; i < numsigs; i++)
2622                 if (program_signals[i])
2623                   fprintf_unfiltered (gdb_stdlog, " %s",
2624                                       gdb_signal_to_name (i));
2625
2626               fprintf_unfiltered (gdb_stdlog, " })\n");
2627             }
2628
2629           (*t->to_program_signals) (t, numsigs, program_signals);
2630           return;
2631         }
2632     }
2633 }
2634
2635 /* Look through the list of possible targets for a target that can
2636    follow forks.  */
2637
2638 int
2639 target_follow_fork (int follow_child, int detach_fork)
2640 {
2641   struct target_ops *t;
2642
2643   for (t = current_target.beneath; t != NULL; t = t->beneath)
2644     {
2645       if (t->to_follow_fork != NULL)
2646         {
2647           int retval = t->to_follow_fork (t, follow_child, detach_fork);
2648
2649           if (targetdebug)
2650             fprintf_unfiltered (gdb_stdlog,
2651                                 "target_follow_fork (%d, %d) = %d\n",
2652                                 follow_child, detach_fork, retval);
2653           return retval;
2654         }
2655     }
2656
2657   /* Some target returned a fork event, but did not know how to follow it.  */
2658   internal_error (__FILE__, __LINE__,
2659                   _("could not find a target to follow fork"));
2660 }
2661
2662 void
2663 target_mourn_inferior (void)
2664 {
2665   struct target_ops *t;
2666
2667   for (t = current_target.beneath; t != NULL; t = t->beneath)
2668     {
2669       if (t->to_mourn_inferior != NULL) 
2670         {
2671           t->to_mourn_inferior (t);
2672           if (targetdebug)
2673             fprintf_unfiltered (gdb_stdlog, "target_mourn_inferior ()\n");
2674
2675           /* We no longer need to keep handles on any of the object files.
2676              Make sure to release them to avoid unnecessarily locking any
2677              of them while we're not actually debugging.  */
2678           bfd_cache_close_all ();
2679
2680           return;
2681         }
2682     }
2683
2684   internal_error (__FILE__, __LINE__,
2685                   _("could not find a target to follow mourn inferior"));
2686 }
2687
2688 /* Look for a target which can describe architectural features, starting
2689    from TARGET.  If we find one, return its description.  */
2690
2691 const struct target_desc *
2692 target_read_description (struct target_ops *target)
2693 {
2694   struct target_ops *t;
2695
2696   for (t = target; t != NULL; t = t->beneath)
2697     if (t->to_read_description != NULL)
2698       {
2699         const struct target_desc *tdesc;
2700
2701         tdesc = t->to_read_description (t);
2702         if (tdesc)
2703           return tdesc;
2704       }
2705
2706   return NULL;
2707 }
2708
2709 /* The default implementation of to_search_memory.
2710    This implements a basic search of memory, reading target memory and
2711    performing the search here (as opposed to performing the search in on the
2712    target side with, for example, gdbserver).  */
2713
2714 int
2715 simple_search_memory (struct target_ops *ops,
2716                       CORE_ADDR start_addr, ULONGEST search_space_len,
2717                       const gdb_byte *pattern, ULONGEST pattern_len,
2718                       CORE_ADDR *found_addrp)
2719 {
2720   /* NOTE: also defined in find.c testcase.  */
2721 #define SEARCH_CHUNK_SIZE 16000
2722   const unsigned chunk_size = SEARCH_CHUNK_SIZE;
2723   /* Buffer to hold memory contents for searching.  */
2724   gdb_byte *search_buf;
2725   unsigned search_buf_size;
2726   struct cleanup *old_cleanups;
2727
2728   search_buf_size = chunk_size + pattern_len - 1;
2729
2730   /* No point in trying to allocate a buffer larger than the search space.  */
2731   if (search_space_len < search_buf_size)
2732     search_buf_size = search_space_len;
2733
2734   search_buf = malloc (search_buf_size);
2735   if (search_buf == NULL)
2736     error (_("Unable to allocate memory to perform the search."));
2737   old_cleanups = make_cleanup (free_current_contents, &search_buf);
2738
2739   /* Prime the search buffer.  */
2740
2741   if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2742                    search_buf, start_addr, search_buf_size) != search_buf_size)
2743     {
2744       warning (_("Unable to access %s bytes of target "
2745                  "memory at %s, halting search."),
2746                pulongest (search_buf_size), hex_string (start_addr));
2747       do_cleanups (old_cleanups);
2748       return -1;
2749     }
2750
2751   /* Perform the search.
2752
2753      The loop is kept simple by allocating [N + pattern-length - 1] bytes.
2754      When we've scanned N bytes we copy the trailing bytes to the start and
2755      read in another N bytes.  */
2756
2757   while (search_space_len >= pattern_len)
2758     {
2759       gdb_byte *found_ptr;
2760       unsigned nr_search_bytes = min (search_space_len, search_buf_size);
2761
2762       found_ptr = memmem (search_buf, nr_search_bytes,
2763                           pattern, pattern_len);
2764
2765       if (found_ptr != NULL)
2766         {
2767           CORE_ADDR found_addr = start_addr + (found_ptr - search_buf);
2768
2769           *found_addrp = found_addr;
2770           do_cleanups (old_cleanups);
2771           return 1;
2772         }
2773
2774       /* Not found in this chunk, skip to next chunk.  */
2775
2776       /* Don't let search_space_len wrap here, it's unsigned.  */
2777       if (search_space_len >= chunk_size)
2778         search_space_len -= chunk_size;
2779       else
2780         search_space_len = 0;
2781
2782       if (search_space_len >= pattern_len)
2783         {
2784           unsigned keep_len = search_buf_size - chunk_size;
2785           CORE_ADDR read_addr = start_addr + chunk_size + keep_len;
2786           int nr_to_read;
2787
2788           /* Copy the trailing part of the previous iteration to the front
2789              of the buffer for the next iteration.  */
2790           gdb_assert (keep_len == pattern_len - 1);
2791           memcpy (search_buf, search_buf + chunk_size, keep_len);
2792
2793           nr_to_read = min (search_space_len - keep_len, chunk_size);
2794
2795           if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2796                            search_buf + keep_len, read_addr,
2797                            nr_to_read) != nr_to_read)
2798             {
2799               warning (_("Unable to access %s bytes of target "
2800                          "memory at %s, halting search."),
2801                        plongest (nr_to_read),
2802                        hex_string (read_addr));
2803               do_cleanups (old_cleanups);
2804               return -1;
2805             }
2806
2807           start_addr += chunk_size;
2808         }
2809     }
2810
2811   /* Not found.  */
2812
2813   do_cleanups (old_cleanups);
2814   return 0;
2815 }
2816
2817 /* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the
2818    sequence of bytes in PATTERN with length PATTERN_LEN.
2819
2820    The result is 1 if found, 0 if not found, and -1 if there was an error
2821    requiring halting of the search (e.g. memory read error).
2822    If the pattern is found the address is recorded in FOUND_ADDRP.  */
2823
2824 int
2825 target_search_memory (CORE_ADDR start_addr, ULONGEST search_space_len,
2826                       const gdb_byte *pattern, ULONGEST pattern_len,
2827                       CORE_ADDR *found_addrp)
2828 {
2829   struct target_ops *t;
2830   int found;
2831
2832   /* We don't use INHERIT to set current_target.to_search_memory,
2833      so we have to scan the target stack and handle targetdebug
2834      ourselves.  */
2835
2836   if (targetdebug)
2837     fprintf_unfiltered (gdb_stdlog, "target_search_memory (%s, ...)\n",
2838                         hex_string (start_addr));
2839
2840   for (t = current_target.beneath; t != NULL; t = t->beneath)
2841     if (t->to_search_memory != NULL)
2842       break;
2843
2844   if (t != NULL)
2845     {
2846       found = t->to_search_memory (t, start_addr, search_space_len,
2847                                    pattern, pattern_len, found_addrp);
2848     }
2849   else
2850     {
2851       /* If a special version of to_search_memory isn't available, use the
2852          simple version.  */
2853       found = simple_search_memory (current_target.beneath,
2854                                     start_addr, search_space_len,
2855                                     pattern, pattern_len, found_addrp);
2856     }
2857
2858   if (targetdebug)
2859     fprintf_unfiltered (gdb_stdlog, "  = %d\n", found);
2860
2861   return found;
2862 }
2863
2864 /* Look through the currently pushed targets.  If none of them will
2865    be able to restart the currently running process, issue an error
2866    message.  */
2867
2868 void
2869 target_require_runnable (void)
2870 {
2871   struct target_ops *t;
2872
2873   for (t = target_stack; t != NULL; t = t->beneath)
2874     {
2875       /* If this target knows how to create a new program, then
2876          assume we will still be able to after killing the current
2877          one.  Either killing and mourning will not pop T, or else
2878          find_default_run_target will find it again.  */
2879       if (t->to_create_inferior != NULL)
2880         return;
2881
2882       /* Do not worry about thread_stratum targets that can not
2883          create inferiors.  Assume they will be pushed again if
2884          necessary, and continue to the process_stratum.  */
2885       if (t->to_stratum == thread_stratum
2886           || t->to_stratum == arch_stratum)
2887         continue;
2888
2889       error (_("The \"%s\" target does not support \"run\".  "
2890                "Try \"help target\" or \"continue\"."),
2891              t->to_shortname);
2892     }
2893
2894   /* This function is only called if the target is running.  In that
2895      case there should have been a process_stratum target and it
2896      should either know how to create inferiors, or not...  */
2897   internal_error (__FILE__, __LINE__, _("No targets found"));
2898 }
2899
2900 /* Look through the list of possible targets for a target that can
2901    execute a run or attach command without any other data.  This is
2902    used to locate the default process stratum.
2903
2904    If DO_MESG is not NULL, the result is always valid (error() is
2905    called for errors); else, return NULL on error.  */
2906
2907 static struct target_ops *
2908 find_default_run_target (char *do_mesg)
2909 {
2910   struct target_ops **t;
2911   struct target_ops *runable = NULL;
2912   int count;
2913
2914   count = 0;
2915
2916   for (t = target_structs; t < target_structs + target_struct_size;
2917        ++t)
2918     {
2919       if ((*t)->to_can_run && target_can_run (*t))
2920         {
2921           runable = *t;
2922           ++count;
2923         }
2924     }
2925
2926   if (count != 1)
2927     {
2928       if (do_mesg)
2929         error (_("Don't know how to %s.  Try \"help target\"."), do_mesg);
2930       else
2931         return NULL;
2932     }
2933
2934   return runable;
2935 }
2936
2937 void
2938 find_default_attach (struct target_ops *ops, char *args, int from_tty)
2939 {
2940   struct target_ops *t;
2941
2942   t = find_default_run_target ("attach");
2943   (t->to_attach) (t, args, from_tty);
2944   return;
2945 }
2946
2947 void
2948 find_default_create_inferior (struct target_ops *ops,
2949                               char *exec_file, char *allargs, char **env,
2950                               int from_tty)
2951 {
2952   struct target_ops *t;
2953
2954   t = find_default_run_target ("run");
2955   (t->to_create_inferior) (t, exec_file, allargs, env, from_tty);
2956   return;
2957 }
2958
2959 static int
2960 find_default_can_async_p (struct target_ops *ignore)
2961 {
2962   struct target_ops *t;
2963
2964   /* This may be called before the target is pushed on the stack;
2965      look for the default process stratum.  If there's none, gdb isn't
2966      configured with a native debugger, and target remote isn't
2967      connected yet.  */
2968   t = find_default_run_target (NULL);
2969   if (t && t->to_can_async_p != delegate_can_async_p)
2970     return (t->to_can_async_p) (t);
2971   return 0;
2972 }
2973
2974 static int
2975 find_default_is_async_p (struct target_ops *ignore)
2976 {
2977   struct target_ops *t;
2978
2979   /* This may be called before the target is pushed on the stack;
2980      look for the default process stratum.  If there's none, gdb isn't
2981      configured with a native debugger, and target remote isn't
2982      connected yet.  */
2983   t = find_default_run_target (NULL);
2984   if (t && t->to_is_async_p != delegate_is_async_p)
2985     return (t->to_is_async_p) (t);
2986   return 0;
2987 }
2988
2989 static int
2990 find_default_supports_non_stop (struct target_ops *self)
2991 {
2992   struct target_ops *t;
2993
2994   t = find_default_run_target (NULL);
2995   if (t && t->to_supports_non_stop)
2996     return (t->to_supports_non_stop) (t);
2997   return 0;
2998 }
2999
3000 int
3001 target_supports_non_stop (void)
3002 {
3003   struct target_ops *t;
3004
3005   for (t = &current_target; t != NULL; t = t->beneath)
3006     if (t->to_supports_non_stop)
3007       return t->to_supports_non_stop (t);
3008
3009   return 0;
3010 }
3011
3012 /* Implement the "info proc" command.  */
3013
3014 int
3015 target_info_proc (char *args, enum info_proc_what what)
3016 {
3017   struct target_ops *t;
3018
3019   /* If we're already connected to something that can get us OS
3020      related data, use it.  Otherwise, try using the native
3021      target.  */
3022   if (current_target.to_stratum >= process_stratum)
3023     t = current_target.beneath;
3024   else
3025     t = find_default_run_target (NULL);
3026
3027   for (; t != NULL; t = t->beneath)
3028     {
3029       if (t->to_info_proc != NULL)
3030         {
3031           t->to_info_proc (t, args, what);
3032
3033           if (targetdebug)
3034             fprintf_unfiltered (gdb_stdlog,
3035                                 "target_info_proc (\"%s\", %d)\n", args, what);
3036
3037           return 1;
3038         }
3039     }
3040
3041   return 0;
3042 }
3043
3044 static int
3045 find_default_supports_disable_randomization (struct target_ops *self)
3046 {
3047   struct target_ops *t;
3048
3049   t = find_default_run_target (NULL);
3050   if (t && t->to_supports_disable_randomization)
3051     return (t->to_supports_disable_randomization) (t);
3052   return 0;
3053 }
3054
3055 int
3056 target_supports_disable_randomization (void)
3057 {
3058   struct target_ops *t;
3059
3060   for (t = &current_target; t != NULL; t = t->beneath)
3061     if (t->to_supports_disable_randomization)
3062       return t->to_supports_disable_randomization (t);
3063
3064   return 0;
3065 }
3066
3067 char *
3068 target_get_osdata (const char *type)
3069 {
3070   struct target_ops *t;
3071
3072   /* If we're already connected to something that can get us OS
3073      related data, use it.  Otherwise, try using the native
3074      target.  */
3075   if (current_target.to_stratum >= process_stratum)
3076     t = current_target.beneath;
3077   else
3078     t = find_default_run_target ("get OS data");
3079
3080   if (!t)
3081     return NULL;
3082
3083   return target_read_stralloc (t, TARGET_OBJECT_OSDATA, type);
3084 }
3085
3086 /* Determine the current address space of thread PTID.  */
3087
3088 struct address_space *
3089 target_thread_address_space (ptid_t ptid)
3090 {
3091   struct address_space *aspace;
3092   struct inferior *inf;
3093   struct target_ops *t;
3094
3095   for (t = current_target.beneath; t != NULL; t = t->beneath)
3096     {
3097       if (t->to_thread_address_space != NULL)
3098         {
3099           aspace = t->to_thread_address_space (t, ptid);
3100           gdb_assert (aspace);
3101
3102           if (targetdebug)
3103             fprintf_unfiltered (gdb_stdlog,
3104                                 "target_thread_address_space (%s) = %d\n",
3105                                 target_pid_to_str (ptid),
3106                                 address_space_num (aspace));
3107           return aspace;
3108         }
3109     }
3110
3111   /* Fall-back to the "main" address space of the inferior.  */
3112   inf = find_inferior_pid (ptid_get_pid (ptid));
3113
3114   if (inf == NULL || inf->aspace == NULL)
3115     internal_error (__FILE__, __LINE__,
3116                     _("Can't determine the current "
3117                       "address space of thread %s\n"),
3118                     target_pid_to_str (ptid));
3119
3120   return inf->aspace;
3121 }
3122
3123
3124 /* Target file operations.  */
3125
3126 static struct target_ops *
3127 default_fileio_target (void)
3128 {
3129   /* If we're already connected to something that can perform
3130      file I/O, use it. Otherwise, try using the native target.  */
3131   if (current_target.to_stratum >= process_stratum)
3132     return current_target.beneath;
3133   else
3134     return find_default_run_target ("file I/O");
3135 }
3136
3137 /* Open FILENAME on the target, using FLAGS and MODE.  Return a
3138    target file descriptor, or -1 if an error occurs (and set
3139    *TARGET_ERRNO).  */
3140 int
3141 target_fileio_open (const char *filename, int flags, int mode,
3142                     int *target_errno)
3143 {
3144   struct target_ops *t;
3145
3146   for (t = default_fileio_target (); t != NULL; t = t->beneath)
3147     {
3148       if (t->to_fileio_open != NULL)
3149         {
3150           int fd = t->to_fileio_open (t, filename, flags, mode, target_errno);
3151
3152           if (targetdebug)
3153             fprintf_unfiltered (gdb_stdlog,
3154                                 "target_fileio_open (%s,0x%x,0%o) = %d (%d)\n",
3155                                 filename, flags, mode,
3156                                 fd, fd != -1 ? 0 : *target_errno);
3157           return fd;
3158         }
3159     }
3160
3161   *target_errno = FILEIO_ENOSYS;
3162   return -1;
3163 }
3164
3165 /* Write up to LEN bytes from WRITE_BUF to FD on the target.
3166    Return the number of bytes written, or -1 if an error occurs
3167    (and set *TARGET_ERRNO).  */
3168 int
3169 target_fileio_pwrite (int fd, const gdb_byte *write_buf, int len,
3170                       ULONGEST offset, int *target_errno)
3171 {
3172   struct target_ops *t;
3173
3174   for (t = default_fileio_target (); t != NULL; t = t->beneath)
3175     {
3176       if (t->to_fileio_pwrite != NULL)
3177         {
3178           int ret = t->to_fileio_pwrite (t, fd, write_buf, len, offset,
3179                                          target_errno);
3180
3181           if (targetdebug)
3182             fprintf_unfiltered (gdb_stdlog,
3183                                 "target_fileio_pwrite (%d,...,%d,%s) "
3184                                 "= %d (%d)\n",
3185                                 fd, len, pulongest (offset),
3186                                 ret, ret != -1 ? 0 : *target_errno);
3187           return ret;
3188         }
3189     }
3190
3191   *target_errno = FILEIO_ENOSYS;
3192   return -1;
3193 }
3194
3195 /* Read up to LEN bytes FD on the target into READ_BUF.
3196    Return the number of bytes read, or -1 if an error occurs
3197    (and set *TARGET_ERRNO).  */
3198 int
3199 target_fileio_pread (int fd, gdb_byte *read_buf, int len,
3200                      ULONGEST offset, int *target_errno)
3201 {
3202   struct target_ops *t;
3203
3204   for (t = default_fileio_target (); t != NULL; t = t->beneath)
3205     {
3206       if (t->to_fileio_pread != NULL)
3207         {
3208           int ret = t->to_fileio_pread (t, fd, read_buf, len, offset,
3209                                         target_errno);
3210
3211           if (targetdebug)
3212             fprintf_unfiltered (gdb_stdlog,
3213                                 "target_fileio_pread (%d,...,%d,%s) "
3214                                 "= %d (%d)\n",
3215                                 fd, len, pulongest (offset),
3216                                 ret, ret != -1 ? 0 : *target_errno);
3217           return ret;
3218         }
3219     }
3220
3221   *target_errno = FILEIO_ENOSYS;
3222   return -1;
3223 }
3224
3225 /* Close FD on the target.  Return 0, or -1 if an error occurs
3226    (and set *TARGET_ERRNO).  */
3227 int
3228 target_fileio_close (int fd, int *target_errno)
3229 {
3230   struct target_ops *t;
3231
3232   for (t = default_fileio_target (); t != NULL; t = t->beneath)
3233     {
3234       if (t->to_fileio_close != NULL)
3235         {
3236           int ret = t->to_fileio_close (t, fd, target_errno);
3237
3238           if (targetdebug)
3239             fprintf_unfiltered (gdb_stdlog,
3240                                 "target_fileio_close (%d) = %d (%d)\n",
3241                                 fd, ret, ret != -1 ? 0 : *target_errno);
3242           return ret;
3243         }
3244     }
3245
3246   *target_errno = FILEIO_ENOSYS;
3247   return -1;
3248 }
3249
3250 /* Unlink FILENAME on the target.  Return 0, or -1 if an error
3251    occurs (and set *TARGET_ERRNO).  */
3252 int
3253 target_fileio_unlink (const char *filename, int *target_errno)
3254 {
3255   struct target_ops *t;
3256
3257   for (t = default_fileio_target (); t != NULL; t = t->beneath)
3258     {
3259       if (t->to_fileio_unlink != NULL)
3260         {
3261           int ret = t->to_fileio_unlink (t, filename, target_errno);
3262
3263           if (targetdebug)
3264             fprintf_unfiltered (gdb_stdlog,
3265                                 "target_fileio_unlink (%s) = %d (%d)\n",
3266                                 filename, ret, ret != -1 ? 0 : *target_errno);
3267           return ret;
3268         }
3269     }
3270
3271   *target_errno = FILEIO_ENOSYS;
3272   return -1;
3273 }
3274
3275 /* Read value of symbolic link FILENAME on the target.  Return a
3276    null-terminated string allocated via xmalloc, or NULL if an error
3277    occurs (and set *TARGET_ERRNO).  */
3278 char *
3279 target_fileio_readlink (const char *filename, int *target_errno)
3280 {
3281   struct target_ops *t;
3282
3283   for (t = default_fileio_target (); t != NULL; t = t->beneath)
3284     {
3285       if (t->to_fileio_readlink != NULL)
3286         {
3287           char *ret = t->to_fileio_readlink (t, filename, target_errno);
3288
3289           if (targetdebug)
3290             fprintf_unfiltered (gdb_stdlog,
3291                                 "target_fileio_readlink (%s) = %s (%d)\n",
3292                                 filename, ret? ret : "(nil)",
3293                                 ret? 0 : *target_errno);
3294           return ret;
3295         }
3296     }
3297
3298   *target_errno = FILEIO_ENOSYS;
3299   return NULL;
3300 }
3301
3302 static void
3303 target_fileio_close_cleanup (void *opaque)
3304 {
3305   int fd = *(int *) opaque;
3306   int target_errno;
3307
3308   target_fileio_close (fd, &target_errno);
3309 }
3310
3311 /* Read target file FILENAME.  Store the result in *BUF_P and
3312    return the size of the transferred data.  PADDING additional bytes are
3313    available in *BUF_P.  This is a helper function for
3314    target_fileio_read_alloc; see the declaration of that function for more
3315    information.  */
3316
3317 static LONGEST
3318 target_fileio_read_alloc_1 (const char *filename,
3319                             gdb_byte **buf_p, int padding)
3320 {
3321   struct cleanup *close_cleanup;
3322   size_t buf_alloc, buf_pos;
3323   gdb_byte *buf;
3324   LONGEST n;
3325   int fd;
3326   int target_errno;
3327
3328   fd = target_fileio_open (filename, FILEIO_O_RDONLY, 0700, &target_errno);
3329   if (fd == -1)
3330     return -1;
3331
3332   close_cleanup = make_cleanup (target_fileio_close_cleanup, &fd);
3333
3334   /* Start by reading up to 4K at a time.  The target will throttle
3335      this number down if necessary.  */
3336   buf_alloc = 4096;
3337   buf = xmalloc (buf_alloc);
3338   buf_pos = 0;
3339   while (1)
3340     {
3341       n = target_fileio_pread (fd, &buf[buf_pos],
3342                                buf_alloc - buf_pos - padding, buf_pos,
3343                                &target_errno);
3344       if (n < 0)
3345         {
3346           /* An error occurred.  */
3347           do_cleanups (close_cleanup);
3348           xfree (buf);
3349           return -1;
3350         }
3351       else if (n == 0)
3352         {
3353           /* Read all there was.  */
3354           do_cleanups (close_cleanup);
3355           if (buf_pos == 0)
3356             xfree (buf);
3357           else
3358             *buf_p = buf;
3359           return buf_pos;
3360         }
3361
3362       buf_pos += n;
3363
3364       /* If the buffer is filling up, expand it.  */
3365       if (buf_alloc < buf_pos * 2)
3366         {
3367           buf_alloc *= 2;
3368           buf = xrealloc (buf, buf_alloc);
3369         }
3370
3371       QUIT;
3372     }
3373 }
3374
3375 /* Read target file FILENAME.  Store the result in *BUF_P and return
3376    the size of the transferred data.  See the declaration in "target.h"
3377    function for more information about the return value.  */
3378
3379 LONGEST
3380 target_fileio_read_alloc (const char *filename, gdb_byte **buf_p)
3381 {
3382   return target_fileio_read_alloc_1 (filename, buf_p, 0);
3383 }
3384
3385 /* Read target file FILENAME.  The result is NUL-terminated and
3386    returned as a string, allocated using xmalloc.  If an error occurs
3387    or the transfer is unsupported, NULL is returned.  Empty objects
3388    are returned as allocated but empty strings.  A warning is issued
3389    if the result contains any embedded NUL bytes.  */
3390
3391 char *
3392 target_fileio_read_stralloc (const char *filename)
3393 {
3394   gdb_byte *buffer;
3395   char *bufstr;
3396   LONGEST i, transferred;
3397
3398   transferred = target_fileio_read_alloc_1 (filename, &buffer, 1);
3399   bufstr = (char *) buffer;
3400
3401   if (transferred < 0)
3402     return NULL;
3403
3404   if (transferred == 0)
3405     return xstrdup ("");
3406
3407   bufstr[transferred] = 0;
3408
3409   /* Check for embedded NUL bytes; but allow trailing NULs.  */
3410   for (i = strlen (bufstr); i < transferred; i++)
3411     if (bufstr[i] != 0)
3412       {
3413         warning (_("target file %s "
3414                    "contained unexpected null characters"),
3415                  filename);
3416         break;
3417       }
3418
3419   return bufstr;
3420 }
3421
3422
3423 static int
3424 default_region_ok_for_hw_watchpoint (struct target_ops *self,
3425                                      CORE_ADDR addr, int len)
3426 {
3427   return (len <= gdbarch_ptr_bit (target_gdbarch ()) / TARGET_CHAR_BIT);
3428 }
3429
3430 static int
3431 default_watchpoint_addr_within_range (struct target_ops *target,
3432                                       CORE_ADDR addr,
3433                                       CORE_ADDR start, int length)
3434 {
3435   return addr >= start && addr < start + length;
3436 }
3437
3438 static struct gdbarch *
3439 default_thread_architecture (struct target_ops *ops, ptid_t ptid)
3440 {
3441   return target_gdbarch ();
3442 }
3443
3444 static int
3445 return_zero (void)
3446 {
3447   return 0;
3448 }
3449
3450 /*
3451  * Find the next target down the stack from the specified target.
3452  */
3453
3454 struct target_ops *
3455 find_target_beneath (struct target_ops *t)
3456 {
3457   return t->beneath;
3458 }
3459
3460 /* See target.h.  */
3461
3462 struct target_ops *
3463 find_target_at (enum strata stratum)
3464 {
3465   struct target_ops *t;
3466
3467   for (t = current_target.beneath; t != NULL; t = t->beneath)
3468     if (t->to_stratum == stratum)
3469       return t;
3470
3471   return NULL;
3472 }
3473
3474 \f
3475 /* The inferior process has died.  Long live the inferior!  */
3476
3477 void
3478 generic_mourn_inferior (void)
3479 {
3480   ptid_t ptid;
3481
3482   ptid = inferior_ptid;
3483   inferior_ptid = null_ptid;
3484
3485   /* Mark breakpoints uninserted in case something tries to delete a
3486      breakpoint while we delete the inferior's threads (which would
3487      fail, since the inferior is long gone).  */
3488   mark_breakpoints_out ();
3489
3490   if (!ptid_equal (ptid, null_ptid))
3491     {
3492       int pid = ptid_get_pid (ptid);
3493       exit_inferior (pid);
3494     }
3495
3496   /* Note this wipes step-resume breakpoints, so needs to be done
3497      after exit_inferior, which ends up referencing the step-resume
3498      breakpoints through clear_thread_inferior_resources.  */
3499   breakpoint_init_inferior (inf_exited);
3500
3501   registers_changed ();
3502
3503   reopen_exec_file ();
3504   reinit_frame_cache ();
3505
3506   if (deprecated_detach_hook)
3507     deprecated_detach_hook ();
3508 }
3509 \f
3510 /* Convert a normal process ID to a string.  Returns the string in a
3511    static buffer.  */
3512
3513 char *
3514 normal_pid_to_str (ptid_t ptid)
3515 {
3516   static char buf[32];
3517
3518   xsnprintf (buf, sizeof buf, "process %d", ptid_get_pid (ptid));
3519   return buf;
3520 }
3521
3522 static char *
3523 dummy_pid_to_str (struct target_ops *ops, ptid_t ptid)
3524 {
3525   return normal_pid_to_str (ptid);
3526 }
3527
3528 /* Error-catcher for target_find_memory_regions.  */
3529 static int
3530 dummy_find_memory_regions (struct target_ops *self,
3531                            find_memory_region_ftype ignore1, void *ignore2)
3532 {
3533   error (_("Command not implemented for this target."));
3534   return 0;
3535 }
3536
3537 /* Error-catcher for target_make_corefile_notes.  */
3538 static char *
3539 dummy_make_corefile_notes (struct target_ops *self,
3540                            bfd *ignore1, int *ignore2)
3541 {
3542   error (_("Command not implemented for this target."));
3543   return NULL;
3544 }
3545
3546 /* Set up the handful of non-empty slots needed by the dummy target
3547    vector.  */
3548
3549 static void
3550 init_dummy_target (void)
3551 {
3552   dummy_target.to_shortname = "None";
3553   dummy_target.to_longname = "None";
3554   dummy_target.to_doc = "";
3555   dummy_target.to_create_inferior = find_default_create_inferior;
3556   dummy_target.to_supports_non_stop = find_default_supports_non_stop;
3557   dummy_target.to_supports_disable_randomization
3558     = find_default_supports_disable_randomization;
3559   dummy_target.to_pid_to_str = dummy_pid_to_str;
3560   dummy_target.to_stratum = dummy_stratum;
3561   dummy_target.to_has_all_memory = (int (*) (struct target_ops *)) return_zero;
3562   dummy_target.to_has_memory = (int (*) (struct target_ops *)) return_zero;
3563   dummy_target.to_has_stack = (int (*) (struct target_ops *)) return_zero;
3564   dummy_target.to_has_registers = (int (*) (struct target_ops *)) return_zero;
3565   dummy_target.to_has_execution
3566     = (int (*) (struct target_ops *, ptid_t)) return_zero;
3567   dummy_target.to_magic = OPS_MAGIC;
3568
3569   install_dummy_methods (&dummy_target);
3570 }
3571 \f
3572 static void
3573 debug_to_open (char *args, int from_tty)
3574 {
3575   debug_target.to_open (args, from_tty);
3576
3577   fprintf_unfiltered (gdb_stdlog, "target_open (%s, %d)\n", args, from_tty);
3578 }
3579
3580 void
3581 target_close (struct target_ops *targ)
3582 {
3583   gdb_assert (!target_is_pushed (targ));
3584
3585   if (targ->to_xclose != NULL)
3586     targ->to_xclose (targ);
3587   else if (targ->to_close != NULL)
3588     targ->to_close (targ);
3589
3590   if (targetdebug)
3591     fprintf_unfiltered (gdb_stdlog, "target_close ()\n");
3592 }
3593
3594 void
3595 target_attach (char *args, int from_tty)
3596 {
3597   current_target.to_attach (&current_target, args, from_tty);
3598   if (targetdebug)
3599     fprintf_unfiltered (gdb_stdlog, "target_attach (%s, %d)\n",
3600                         args, from_tty);
3601 }
3602
3603 int
3604 target_thread_alive (ptid_t ptid)
3605 {
3606   struct target_ops *t;
3607
3608   for (t = current_target.beneath; t != NULL; t = t->beneath)
3609     {
3610       if (t->to_thread_alive != NULL)
3611         {
3612           int retval;
3613
3614           retval = t->to_thread_alive (t, ptid);
3615           if (targetdebug)
3616             fprintf_unfiltered (gdb_stdlog, "target_thread_alive (%d) = %d\n",
3617                                 ptid_get_pid (ptid), retval);
3618
3619           return retval;
3620         }
3621     }
3622
3623   return 0;
3624 }
3625
3626 void
3627 target_find_new_threads (void)
3628 {
3629   struct target_ops *t;
3630
3631   for (t = current_target.beneath; t != NULL; t = t->beneath)
3632     {
3633       if (t->to_find_new_threads != NULL)
3634         {
3635           t->to_find_new_threads (t);
3636           if (targetdebug)
3637             fprintf_unfiltered (gdb_stdlog, "target_find_new_threads ()\n");
3638
3639           return;
3640         }
3641     }
3642 }
3643
3644 void
3645 target_stop (ptid_t ptid)
3646 {
3647   if (!may_stop)
3648     {
3649       warning (_("May not interrupt or stop the target, ignoring attempt"));
3650       return;
3651     }
3652
3653   (*current_target.to_stop) (&current_target, ptid);
3654 }
3655
3656 static void
3657 debug_to_post_attach (struct target_ops *self, int pid)
3658 {
3659   debug_target.to_post_attach (&debug_target, pid);
3660
3661   fprintf_unfiltered (gdb_stdlog, "target_post_attach (%d)\n", pid);
3662 }
3663
3664 /* Concatenate ELEM to LIST, a comma separate list, and return the
3665    result.  The LIST incoming argument is released.  */
3666
3667 static char *
3668 str_comma_list_concat_elem (char *list, const char *elem)
3669 {
3670   if (list == NULL)
3671     return xstrdup (elem);
3672   else
3673     return reconcat (list, list, ", ", elem, (char *) NULL);
3674 }
3675
3676 /* Helper for target_options_to_string.  If OPT is present in
3677    TARGET_OPTIONS, append the OPT_STR (string version of OPT) in RET.
3678    Returns the new resulting string.  OPT is removed from
3679    TARGET_OPTIONS.  */
3680
3681 static char *
3682 do_option (int *target_options, char *ret,
3683            int opt, char *opt_str)
3684 {
3685   if ((*target_options & opt) != 0)
3686     {
3687       ret = str_comma_list_concat_elem (ret, opt_str);
3688       *target_options &= ~opt;
3689     }
3690
3691   return ret;
3692 }
3693
3694 char *
3695 target_options_to_string (int target_options)
3696 {
3697   char *ret = NULL;
3698
3699 #define DO_TARG_OPTION(OPT) \
3700   ret = do_option (&target_options, ret, OPT, #OPT)
3701
3702   DO_TARG_OPTION (TARGET_WNOHANG);
3703
3704   if (target_options != 0)
3705     ret = str_comma_list_concat_elem (ret, "unknown???");
3706
3707   if (ret == NULL)
3708     ret = xstrdup ("");
3709   return ret;
3710 }
3711
3712 static void
3713 debug_print_register (const char * func,
3714                       struct regcache *regcache, int regno)
3715 {
3716   struct gdbarch *gdbarch = get_regcache_arch (regcache);
3717
3718   fprintf_unfiltered (gdb_stdlog, "%s ", func);
3719   if (regno >= 0 && regno < gdbarch_num_regs (gdbarch)
3720       && gdbarch_register_name (gdbarch, regno) != NULL
3721       && gdbarch_register_name (gdbarch, regno)[0] != '\0')
3722     fprintf_unfiltered (gdb_stdlog, "(%s)",
3723                         gdbarch_register_name (gdbarch, regno));
3724   else
3725     fprintf_unfiltered (gdb_stdlog, "(%d)", regno);
3726   if (regno >= 0 && regno < gdbarch_num_regs (gdbarch))
3727     {
3728       enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
3729       int i, size = register_size (gdbarch, regno);
3730       gdb_byte buf[MAX_REGISTER_SIZE];
3731
3732       regcache_raw_collect (regcache, regno, buf);
3733       fprintf_unfiltered (gdb_stdlog, " = ");
3734       for (i = 0; i < size; i++)
3735         {
3736           fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
3737         }
3738       if (size <= sizeof (LONGEST))
3739         {
3740           ULONGEST val = extract_unsigned_integer (buf, size, byte_order);
3741
3742           fprintf_unfiltered (gdb_stdlog, " %s %s",
3743                               core_addr_to_string_nz (val), plongest (val));
3744         }
3745     }
3746   fprintf_unfiltered (gdb_stdlog, "\n");
3747 }
3748
3749 void
3750 target_fetch_registers (struct regcache *regcache, int regno)
3751 {
3752   current_target.to_fetch_registers (&current_target, regcache, regno);
3753   if (targetdebug)
3754     debug_print_register ("target_fetch_registers", regcache, regno);
3755 }
3756
3757 void
3758 target_store_registers (struct regcache *regcache, int regno)
3759 {
3760   struct target_ops *t;
3761
3762   if (!may_write_registers)
3763     error (_("Writing to registers is not allowed (regno %d)"), regno);
3764
3765   current_target.to_store_registers (&current_target, regcache, regno);
3766   if (targetdebug)
3767     {
3768       debug_print_register ("target_store_registers", regcache, regno);
3769     }
3770 }
3771
3772 int
3773 target_core_of_thread (ptid_t ptid)
3774 {
3775   struct target_ops *t;
3776
3777   for (t = current_target.beneath; t != NULL; t = t->beneath)
3778     {
3779       if (t->to_core_of_thread != NULL)
3780         {
3781           int retval = t->to_core_of_thread (t, ptid);
3782
3783           if (targetdebug)
3784             fprintf_unfiltered (gdb_stdlog,
3785                                 "target_core_of_thread (%d) = %d\n",
3786                                 ptid_get_pid (ptid), retval);
3787           return retval;
3788         }
3789     }
3790
3791   return -1;
3792 }
3793
3794 int
3795 target_verify_memory (const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
3796 {
3797   struct target_ops *t;
3798
3799   for (t = current_target.beneath; t != NULL; t = t->beneath)
3800     {
3801       if (t->to_verify_memory != NULL)
3802         {
3803           int retval = t->to_verify_memory (t, data, memaddr, size);
3804
3805           if (targetdebug)
3806             fprintf_unfiltered (gdb_stdlog,
3807                                 "target_verify_memory (%s, %s) = %d\n",
3808                                 paddress (target_gdbarch (), memaddr),
3809                                 pulongest (size),
3810                                 retval);
3811           return retval;
3812         }
3813     }
3814
3815   tcomplain ();
3816 }
3817
3818 /* The documentation for this function is in its prototype declaration in
3819    target.h.  */
3820
3821 int
3822 target_insert_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask, int rw)
3823 {
3824   int ret;
3825
3826   ret = current_target.to_insert_mask_watchpoint (&current_target,
3827                                                   addr, mask, rw);
3828
3829   if (targetdebug)
3830     fprintf_unfiltered (gdb_stdlog, "\
3831 target_insert_mask_watchpoint (%s, %s, %d) = %d\n",
3832                         core_addr_to_string (addr),
3833                         core_addr_to_string (mask), rw, ret);
3834   
3835   return ret;
3836 }
3837
3838 /* The documentation for this function is in its prototype declaration in
3839    target.h.  */
3840
3841 int
3842 target_remove_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask, int rw)
3843 {
3844   int ret;
3845
3846   ret = current_target.to_remove_mask_watchpoint (&current_target,
3847                                                   addr, mask, rw);
3848
3849   if (targetdebug)
3850     fprintf_unfiltered (gdb_stdlog, "\
3851 target_remove_mask_watchpoint (%s, %s, %d) = %d\n",
3852                         core_addr_to_string (addr),
3853                         core_addr_to_string (mask), rw, ret);
3854
3855   return ret;
3856 }
3857
3858 /* The documentation for this function is in its prototype declaration
3859    in target.h.  */
3860
3861 int
3862 target_masked_watch_num_registers (CORE_ADDR addr, CORE_ADDR mask)
3863 {
3864   return current_target.to_masked_watch_num_registers (&current_target,
3865                                                        addr, mask);
3866 }
3867
3868 /* The documentation for this function is in its prototype declaration
3869    in target.h.  */
3870
3871 int
3872 target_ranged_break_num_registers (void)
3873 {
3874   return current_target.to_ranged_break_num_registers (&current_target);
3875 }
3876
3877 /* See target.h.  */
3878
3879 struct btrace_target_info *
3880 target_enable_btrace (ptid_t ptid)
3881 {
3882   struct target_ops *t;
3883
3884   for (t = current_target.beneath; t != NULL; t = t->beneath)
3885     if (t->to_enable_btrace != NULL)
3886       return t->to_enable_btrace (t, ptid);
3887
3888   tcomplain ();
3889   return NULL;
3890 }
3891
3892 /* See target.h.  */
3893
3894 void
3895 target_disable_btrace (struct btrace_target_info *btinfo)
3896 {
3897   struct target_ops *t;
3898
3899   for (t = current_target.beneath; t != NULL; t = t->beneath)
3900     if (t->to_disable_btrace != NULL)
3901       {
3902         t->to_disable_btrace (t, btinfo);
3903         return;
3904       }
3905
3906   tcomplain ();
3907 }
3908
3909 /* See target.h.  */
3910
3911 void
3912 target_teardown_btrace (struct btrace_target_info *btinfo)
3913 {
3914   struct target_ops *t;
3915
3916   for (t = current_target.beneath; t != NULL; t = t->beneath)
3917     if (t->to_teardown_btrace != NULL)
3918       {
3919         t->to_teardown_btrace (t, btinfo);
3920         return;
3921       }
3922
3923   tcomplain ();
3924 }
3925
3926 /* See target.h.  */
3927
3928 enum btrace_error
3929 target_read_btrace (VEC (btrace_block_s) **btrace,
3930                     struct btrace_target_info *btinfo,
3931                     enum btrace_read_type type)
3932 {
3933   struct target_ops *t;
3934
3935   for (t = current_target.beneath; t != NULL; t = t->beneath)
3936     if (t->to_read_btrace != NULL)
3937       return t->to_read_btrace (t, btrace, btinfo, type);
3938
3939   tcomplain ();
3940   return BTRACE_ERR_NOT_SUPPORTED;
3941 }
3942
3943 /* See target.h.  */
3944
3945 void
3946 target_stop_recording (void)
3947 {
3948   struct target_ops *t;
3949
3950   for (t = current_target.beneath; t != NULL; t = t->beneath)
3951     if (t->to_stop_recording != NULL)
3952       {
3953         t->to_stop_recording (t);
3954         return;
3955       }
3956
3957   /* This is optional.  */
3958 }
3959
3960 /* See target.h.  */
3961
3962 void
3963 target_info_record (void)
3964 {
3965   struct target_ops *t;
3966
3967   for (t = current_target.beneath; t != NULL; t = t->beneath)
3968     if (t->to_info_record != NULL)
3969       {
3970         t->to_info_record (t);
3971         return;
3972       }
3973
3974   tcomplain ();
3975 }
3976
3977 /* See target.h.  */
3978
3979 void
3980 target_save_record (const char *filename)
3981 {
3982   struct target_ops *t;
3983
3984   for (t = current_target.beneath; t != NULL; t = t->beneath)
3985     if (t->to_save_record != NULL)
3986       {
3987         t->to_save_record (t, filename);
3988         return;
3989       }
3990
3991   tcomplain ();
3992 }
3993
3994 /* See target.h.  */
3995
3996 int
3997 target_supports_delete_record (void)
3998 {
3999   struct target_ops *t;
4000
4001   for (t = current_target.beneath; t != NULL; t = t->beneath)
4002     if (t->to_delete_record != NULL)
4003       return 1;
4004
4005   return 0;
4006 }
4007
4008 /* See target.h.  */
4009
4010 void
4011 target_delete_record (void)
4012 {
4013   struct target_ops *t;
4014
4015   for (t = current_target.beneath; t != NULL; t = t->beneath)
4016     if (t->to_delete_record != NULL)
4017       {
4018         t->to_delete_record (t);
4019         return;
4020       }
4021
4022   tcomplain ();
4023 }
4024
4025 /* See target.h.  */
4026
4027 int
4028 target_record_is_replaying (void)
4029 {
4030   struct target_ops *t;
4031
4032   for (t = current_target.beneath; t != NULL; t = t->beneath)
4033     if (t->to_record_is_replaying != NULL)
4034         return t->to_record_is_replaying (t);
4035
4036   return 0;
4037 }
4038
4039 /* See target.h.  */
4040
4041 void
4042 target_goto_record_begin (void)
4043 {
4044   struct target_ops *t;
4045
4046   for (t = current_target.beneath; t != NULL; t = t->beneath)
4047     if (t->to_goto_record_begin != NULL)
4048       {
4049         t->to_goto_record_begin (t);
4050         return;
4051       }
4052
4053   tcomplain ();
4054 }
4055
4056 /* See target.h.  */
4057
4058 void
4059 target_goto_record_end (void)
4060 {
4061   struct target_ops *t;
4062
4063   for (t = current_target.beneath; t != NULL; t = t->beneath)
4064     if (t->to_goto_record_end != NULL)
4065       {
4066         t->to_goto_record_end (t);
4067         return;
4068       }
4069
4070   tcomplain ();
4071 }
4072
4073 /* See target.h.  */
4074
4075 void
4076 target_goto_record (ULONGEST insn)
4077 {
4078   struct target_ops *t;
4079
4080   for (t = current_target.beneath; t != NULL; t = t->beneath)
4081     if (t->to_goto_record != NULL)
4082       {
4083         t->to_goto_record (t, insn);
4084         return;
4085       }
4086
4087   tcomplain ();
4088 }
4089
4090 /* See target.h.  */
4091
4092 void
4093 target_insn_history (int size, int flags)
4094 {
4095   struct target_ops *t;
4096
4097   for (t = current_target.beneath; t != NULL; t = t->beneath)
4098     if (t->to_insn_history != NULL)
4099       {
4100         t->to_insn_history (t, size, flags);
4101         return;
4102       }
4103
4104   tcomplain ();
4105 }
4106
4107 /* See target.h.  */
4108
4109 void
4110 target_insn_history_from (ULONGEST from, int size, int flags)
4111 {
4112   struct target_ops *t;
4113
4114   for (t = current_target.beneath; t != NULL; t = t->beneath)
4115     if (t->to_insn_history_from != NULL)
4116       {
4117         t->to_insn_history_from (t, from, size, flags);
4118         return;
4119       }
4120
4121   tcomplain ();
4122 }
4123
4124 /* See target.h.  */
4125
4126 void
4127 target_insn_history_range (ULONGEST begin, ULONGEST end, int flags)
4128 {
4129   struct target_ops *t;
4130
4131   for (t = current_target.beneath; t != NULL; t = t->beneath)
4132     if (t->to_insn_history_range != NULL)
4133       {
4134         t->to_insn_history_range (t, begin, end, flags);
4135         return;
4136       }
4137
4138   tcomplain ();
4139 }
4140
4141 /* See target.h.  */
4142
4143 void
4144 target_call_history (int size, int flags)
4145 {
4146   struct target_ops *t;
4147
4148   for (t = current_target.beneath; t != NULL; t = t->beneath)
4149     if (t->to_call_history != NULL)
4150       {
4151         t->to_call_history (t, size, flags);
4152         return;
4153       }
4154
4155   tcomplain ();
4156 }
4157
4158 /* See target.h.  */
4159
4160 void
4161 target_call_history_from (ULONGEST begin, int size, int flags)
4162 {
4163   struct target_ops *t;
4164
4165   for (t = current_target.beneath; t != NULL; t = t->beneath)
4166     if (t->to_call_history_from != NULL)
4167       {
4168         t->to_call_history_from (t, begin, size, flags);
4169         return;
4170       }
4171
4172   tcomplain ();
4173 }
4174
4175 /* See target.h.  */
4176
4177 void
4178 target_call_history_range (ULONGEST begin, ULONGEST end, int flags)
4179 {
4180   struct target_ops *t;
4181
4182   for (t = current_target.beneath; t != NULL; t = t->beneath)
4183     if (t->to_call_history_range != NULL)
4184       {
4185         t->to_call_history_range (t, begin, end, flags);
4186         return;
4187       }
4188
4189   tcomplain ();
4190 }
4191
4192 static void
4193 debug_to_prepare_to_store (struct target_ops *self, struct regcache *regcache)
4194 {
4195   debug_target.to_prepare_to_store (&debug_target, regcache);
4196
4197   fprintf_unfiltered (gdb_stdlog, "target_prepare_to_store ()\n");
4198 }
4199
4200 /* See target.h.  */
4201
4202 const struct frame_unwind *
4203 target_get_unwinder (void)
4204 {
4205   struct target_ops *t;
4206
4207   for (t = current_target.beneath; t != NULL; t = t->beneath)
4208     if (t->to_get_unwinder != NULL)
4209       return t->to_get_unwinder;
4210
4211   return NULL;
4212 }
4213
4214 /* See target.h.  */
4215
4216 const struct frame_unwind *
4217 target_get_tailcall_unwinder (void)
4218 {
4219   struct target_ops *t;
4220
4221   for (t = current_target.beneath; t != NULL; t = t->beneath)
4222     if (t->to_get_tailcall_unwinder != NULL)
4223       return t->to_get_tailcall_unwinder;
4224
4225   return NULL;
4226 }
4227
4228 /* See target.h.  */
4229
4230 CORE_ADDR
4231 forward_target_decr_pc_after_break (struct target_ops *ops,
4232                                     struct gdbarch *gdbarch)
4233 {
4234   for (; ops != NULL; ops = ops->beneath)
4235     if (ops->to_decr_pc_after_break != NULL)
4236       return ops->to_decr_pc_after_break (ops, gdbarch);
4237
4238   return gdbarch_decr_pc_after_break (gdbarch);
4239 }
4240
4241 /* See target.h.  */
4242
4243 CORE_ADDR
4244 target_decr_pc_after_break (struct gdbarch *gdbarch)
4245 {
4246   return forward_target_decr_pc_after_break (current_target.beneath, gdbarch);
4247 }
4248
4249 static int
4250 deprecated_debug_xfer_memory (CORE_ADDR memaddr, bfd_byte *myaddr, int len,
4251                               int write, struct mem_attrib *attrib,
4252                               struct target_ops *target)
4253 {
4254   int retval;
4255
4256   retval = debug_target.deprecated_xfer_memory (memaddr, myaddr, len, write,
4257                                                 attrib, target);
4258
4259   fprintf_unfiltered (gdb_stdlog,
4260                       "target_xfer_memory (%s, xxx, %d, %s, xxx) = %d",
4261                       paddress (target_gdbarch (), memaddr), len,
4262                       write ? "write" : "read", retval);
4263
4264   if (retval > 0)
4265     {
4266       int i;
4267
4268       fputs_unfiltered (", bytes =", gdb_stdlog);
4269       for (i = 0; i < retval; i++)
4270         {
4271           if ((((intptr_t) &(myaddr[i])) & 0xf) == 0)
4272             {
4273               if (targetdebug < 2 && i > 0)
4274                 {
4275                   fprintf_unfiltered (gdb_stdlog, " ...");
4276                   break;
4277                 }
4278               fprintf_unfiltered (gdb_stdlog, "\n");
4279             }
4280
4281           fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
4282         }
4283     }
4284
4285   fputc_unfiltered ('\n', gdb_stdlog);
4286
4287   return retval;
4288 }
4289
4290 static void
4291 debug_to_files_info (struct target_ops *target)
4292 {
4293   debug_target.to_files_info (target);
4294
4295   fprintf_unfiltered (gdb_stdlog, "target_files_info (xxx)\n");
4296 }
4297
4298 static int
4299 debug_to_insert_breakpoint (struct target_ops *ops, struct gdbarch *gdbarch,
4300                             struct bp_target_info *bp_tgt)
4301 {
4302   int retval;
4303
4304   retval = debug_target.to_insert_breakpoint (&debug_target, gdbarch, bp_tgt);
4305
4306   fprintf_unfiltered (gdb_stdlog,
4307                       "target_insert_breakpoint (%s, xxx) = %ld\n",
4308                       core_addr_to_string (bp_tgt->placed_address),
4309                       (unsigned long) retval);
4310   return retval;
4311 }
4312
4313 static int
4314 debug_to_remove_breakpoint (struct target_ops *ops, struct gdbarch *gdbarch,
4315                             struct bp_target_info *bp_tgt)
4316 {
4317   int retval;
4318
4319   retval = debug_target.to_remove_breakpoint (&debug_target, gdbarch, bp_tgt);
4320
4321   fprintf_unfiltered (gdb_stdlog,
4322                       "target_remove_breakpoint (%s, xxx) = %ld\n",
4323                       core_addr_to_string (bp_tgt->placed_address),
4324                       (unsigned long) retval);
4325   return retval;
4326 }
4327
4328 static int
4329 debug_to_can_use_hw_breakpoint (struct target_ops *self,
4330                                 int type, int cnt, int from_tty)
4331 {
4332   int retval;
4333
4334   retval = debug_target.to_can_use_hw_breakpoint (&debug_target,
4335                                                   type, cnt, from_tty);
4336
4337   fprintf_unfiltered (gdb_stdlog,
4338                       "target_can_use_hw_breakpoint (%ld, %ld, %ld) = %ld\n",
4339                       (unsigned long) type,
4340                       (unsigned long) cnt,
4341                       (unsigned long) from_tty,
4342                       (unsigned long) retval);
4343   return retval;
4344 }
4345
4346 static int
4347 debug_to_region_ok_for_hw_watchpoint (struct target_ops *self,
4348                                       CORE_ADDR addr, int len)
4349 {
4350   CORE_ADDR retval;
4351
4352   retval = debug_target.to_region_ok_for_hw_watchpoint (&debug_target,
4353                                                         addr, len);
4354
4355   fprintf_unfiltered (gdb_stdlog,
4356                       "target_region_ok_for_hw_watchpoint (%s, %ld) = %s\n",
4357                       core_addr_to_string (addr), (unsigned long) len,
4358                       core_addr_to_string (retval));
4359   return retval;
4360 }
4361
4362 static int
4363 debug_to_can_accel_watchpoint_condition (struct target_ops *self,
4364                                          CORE_ADDR addr, int len, int rw,
4365                                          struct expression *cond)
4366 {
4367   int retval;
4368
4369   retval = debug_target.to_can_accel_watchpoint_condition (&debug_target,
4370                                                            addr, len,
4371                                                            rw, cond);
4372
4373   fprintf_unfiltered (gdb_stdlog,
4374                       "target_can_accel_watchpoint_condition "
4375                       "(%s, %d, %d, %s) = %ld\n",
4376                       core_addr_to_string (addr), len, rw,
4377                       host_address_to_string (cond), (unsigned long) retval);
4378   return retval;
4379 }
4380
4381 static int
4382 debug_to_stopped_by_watchpoint (struct target_ops *ops)
4383 {
4384   int retval;
4385
4386   retval = debug_target.to_stopped_by_watchpoint (&debug_target);
4387
4388   fprintf_unfiltered (gdb_stdlog,
4389                       "target_stopped_by_watchpoint () = %ld\n",
4390                       (unsigned long) retval);
4391   return retval;
4392 }
4393
4394 static int
4395 debug_to_stopped_data_address (struct target_ops *target, CORE_ADDR *addr)
4396 {
4397   int retval;
4398
4399   retval = debug_target.to_stopped_data_address (target, addr);
4400
4401   fprintf_unfiltered (gdb_stdlog,
4402                       "target_stopped_data_address ([%s]) = %ld\n",
4403                       core_addr_to_string (*addr),
4404                       (unsigned long)retval);
4405   return retval;
4406 }
4407
4408 static int
4409 debug_to_watchpoint_addr_within_range (struct target_ops *target,
4410                                        CORE_ADDR addr,
4411                                        CORE_ADDR start, int length)
4412 {
4413   int retval;
4414
4415   retval = debug_target.to_watchpoint_addr_within_range (target, addr,
4416                                                          start, length);
4417
4418   fprintf_filtered (gdb_stdlog,
4419                     "target_watchpoint_addr_within_range (%s, %s, %d) = %d\n",
4420                     core_addr_to_string (addr), core_addr_to_string (start),
4421                     length, retval);
4422   return retval;
4423 }
4424
4425 static int
4426 debug_to_insert_hw_breakpoint (struct target_ops *self,
4427                                struct gdbarch *gdbarch,
4428                                struct bp_target_info *bp_tgt)
4429 {
4430   int retval;
4431
4432   retval = debug_target.to_insert_hw_breakpoint (&debug_target,
4433                                                  gdbarch, bp_tgt);
4434
4435   fprintf_unfiltered (gdb_stdlog,
4436                       "target_insert_hw_breakpoint (%s, xxx) = %ld\n",
4437                       core_addr_to_string (bp_tgt->placed_address),
4438                       (unsigned long) retval);
4439   return retval;
4440 }
4441
4442 static int
4443 debug_to_remove_hw_breakpoint (struct target_ops *self,
4444                                struct gdbarch *gdbarch,
4445                                struct bp_target_info *bp_tgt)
4446 {
4447   int retval;
4448
4449   retval = debug_target.to_remove_hw_breakpoint (&debug_target,
4450                                                  gdbarch, bp_tgt);
4451
4452   fprintf_unfiltered (gdb_stdlog,
4453                       "target_remove_hw_breakpoint (%s, xxx) = %ld\n",
4454                       core_addr_to_string (bp_tgt->placed_address),
4455                       (unsigned long) retval);
4456   return retval;
4457 }
4458
4459 static int
4460 debug_to_insert_watchpoint (struct target_ops *self,
4461                             CORE_ADDR addr, int len, int type,
4462                             struct expression *cond)
4463 {
4464   int retval;
4465
4466   retval = debug_target.to_insert_watchpoint (&debug_target,
4467                                               addr, len, type, cond);
4468
4469   fprintf_unfiltered (gdb_stdlog,
4470                       "target_insert_watchpoint (%s, %d, %d, %s) = %ld\n",
4471                       core_addr_to_string (addr), len, type,
4472                       host_address_to_string (cond), (unsigned long) retval);
4473   return retval;
4474 }
4475
4476 static int
4477 debug_to_remove_watchpoint (struct target_ops *self,
4478                             CORE_ADDR addr, int len, int type,
4479                             struct expression *cond)
4480 {
4481   int retval;
4482
4483   retval = debug_target.to_remove_watchpoint (&debug_target,
4484                                               addr, len, type, cond);
4485
4486   fprintf_unfiltered (gdb_stdlog,
4487                       "target_remove_watchpoint (%s, %d, %d, %s) = %ld\n",
4488                       core_addr_to_string (addr), len, type,
4489                       host_address_to_string (cond), (unsigned long) retval);
4490   return retval;
4491 }
4492
4493 static void
4494 debug_to_terminal_init (struct target_ops *self)
4495 {
4496   debug_target.to_terminal_init (&debug_target);
4497
4498   fprintf_unfiltered (gdb_stdlog, "target_terminal_init ()\n");
4499 }
4500
4501 static void
4502 debug_to_terminal_inferior (struct target_ops *self)
4503 {
4504   debug_target.to_terminal_inferior (&debug_target);
4505
4506   fprintf_unfiltered (gdb_stdlog, "target_terminal_inferior ()\n");
4507 }
4508
4509 static void
4510 debug_to_terminal_ours_for_output (struct target_ops *self)
4511 {
4512   debug_target.to_terminal_ours_for_output (&debug_target);
4513
4514   fprintf_unfiltered (gdb_stdlog, "target_terminal_ours_for_output ()\n");
4515 }
4516
4517 static void
4518 debug_to_terminal_ours (struct target_ops *self)
4519 {
4520   debug_target.to_terminal_ours (&debug_target);
4521
4522   fprintf_unfiltered (gdb_stdlog, "target_terminal_ours ()\n");
4523 }
4524
4525 static void
4526 debug_to_terminal_save_ours (struct target_ops *self)
4527 {
4528   debug_target.to_terminal_save_ours (&debug_target);
4529
4530   fprintf_unfiltered (gdb_stdlog, "target_terminal_save_ours ()\n");
4531 }
4532
4533 static void
4534 debug_to_terminal_info (struct target_ops *self,
4535                         const char *arg, int from_tty)
4536 {
4537   debug_target.to_terminal_info (&debug_target, arg, from_tty);
4538
4539   fprintf_unfiltered (gdb_stdlog, "target_terminal_info (%s, %d)\n", arg,
4540                       from_tty);
4541 }
4542
4543 static void
4544 debug_to_load (struct target_ops *self, char *args, int from_tty)
4545 {
4546   debug_target.to_load (&debug_target, args, from_tty);
4547
4548   fprintf_unfiltered (gdb_stdlog, "target_load (%s, %d)\n", args, from_tty);
4549 }
4550
4551 static void
4552 debug_to_post_startup_inferior (struct target_ops *self, ptid_t ptid)
4553 {
4554   debug_target.to_post_startup_inferior (&debug_target, ptid);
4555
4556   fprintf_unfiltered (gdb_stdlog, "target_post_startup_inferior (%d)\n",
4557                       ptid_get_pid (ptid));
4558 }
4559
4560 static int
4561 debug_to_insert_fork_catchpoint (struct target_ops *self, int pid)
4562 {
4563   int retval;
4564
4565   retval = debug_target.to_insert_fork_catchpoint (&debug_target, pid);
4566
4567   fprintf_unfiltered (gdb_stdlog, "target_insert_fork_catchpoint (%d) = %d\n",
4568                       pid, retval);
4569
4570   return retval;
4571 }
4572
4573 static int
4574 debug_to_remove_fork_catchpoint (struct target_ops *self, int pid)
4575 {
4576   int retval;
4577
4578   retval = debug_target.to_remove_fork_catchpoint (&debug_target, pid);
4579
4580   fprintf_unfiltered (gdb_stdlog, "target_remove_fork_catchpoint (%d) = %d\n",
4581                       pid, retval);
4582
4583   return retval;
4584 }
4585
4586 static int
4587 debug_to_insert_vfork_catchpoint (struct target_ops *self, int pid)
4588 {
4589   int retval;
4590
4591   retval = debug_target.to_insert_vfork_catchpoint (&debug_target, pid);
4592
4593   fprintf_unfiltered (gdb_stdlog, "target_insert_vfork_catchpoint (%d) = %d\n",
4594                       pid, retval);
4595
4596   return retval;
4597 }
4598
4599 static int
4600 debug_to_remove_vfork_catchpoint (struct target_ops *self, int pid)
4601 {
4602   int retval;
4603
4604   retval = debug_target.to_remove_vfork_catchpoint (&debug_target, pid);
4605
4606   fprintf_unfiltered (gdb_stdlog, "target_remove_vfork_catchpoint (%d) = %d\n",
4607                       pid, retval);
4608
4609   return retval;
4610 }
4611
4612 static int
4613 debug_to_insert_exec_catchpoint (struct target_ops *self, int pid)
4614 {
4615   int retval;
4616
4617   retval = debug_target.to_insert_exec_catchpoint (&debug_target, pid);
4618
4619   fprintf_unfiltered (gdb_stdlog, "target_insert_exec_catchpoint (%d) = %d\n",
4620                       pid, retval);
4621
4622   return retval;
4623 }
4624
4625 static int
4626 debug_to_remove_exec_catchpoint (struct target_ops *self, int pid)
4627 {
4628   int retval;
4629
4630   retval = debug_target.to_remove_exec_catchpoint (&debug_target, pid);
4631
4632   fprintf_unfiltered (gdb_stdlog, "target_remove_exec_catchpoint (%d) = %d\n",
4633                       pid, retval);
4634
4635   return retval;
4636 }
4637
4638 static int
4639 debug_to_has_exited (struct target_ops *self,
4640                      int pid, int wait_status, int *exit_status)
4641 {
4642   int has_exited;
4643
4644   has_exited = debug_target.to_has_exited (&debug_target,
4645                                            pid, wait_status, exit_status);
4646
4647   fprintf_unfiltered (gdb_stdlog, "target_has_exited (%d, %d, %d) = %d\n",
4648                       pid, wait_status, *exit_status, has_exited);
4649
4650   return has_exited;
4651 }
4652
4653 static int
4654 debug_to_can_run (struct target_ops *self)
4655 {
4656   int retval;
4657
4658   retval = debug_target.to_can_run (&debug_target);
4659
4660   fprintf_unfiltered (gdb_stdlog, "target_can_run () = %d\n", retval);
4661
4662   return retval;
4663 }
4664
4665 static struct gdbarch *
4666 debug_to_thread_architecture (struct target_ops *ops, ptid_t ptid)
4667 {
4668   struct gdbarch *retval;
4669
4670   retval = debug_target.to_thread_architecture (ops, ptid);
4671
4672   fprintf_unfiltered (gdb_stdlog, 
4673                       "target_thread_architecture (%s) = %s [%s]\n",
4674                       target_pid_to_str (ptid),
4675                       host_address_to_string (retval),
4676                       gdbarch_bfd_arch_info (retval)->printable_name);
4677   return retval;
4678 }
4679
4680 static void
4681 debug_to_stop (struct target_ops *self, ptid_t ptid)
4682 {
4683   debug_target.to_stop (&debug_target, ptid);
4684
4685   fprintf_unfiltered (gdb_stdlog, "target_stop (%s)\n",
4686                       target_pid_to_str (ptid));
4687 }
4688
4689 static void
4690 debug_to_rcmd (struct target_ops *self, char *command,
4691                struct ui_file *outbuf)
4692 {
4693   debug_target.to_rcmd (&debug_target, command, outbuf);
4694   fprintf_unfiltered (gdb_stdlog, "target_rcmd (%s, ...)\n", command);
4695 }
4696
4697 static char *
4698 debug_to_pid_to_exec_file (struct target_ops *self, int pid)
4699 {
4700   char *exec_file;
4701
4702   exec_file = debug_target.to_pid_to_exec_file (&debug_target, pid);
4703
4704   fprintf_unfiltered (gdb_stdlog, "target_pid_to_exec_file (%d) = %s\n",
4705                       pid, exec_file);
4706
4707   return exec_file;
4708 }
4709
4710 static void
4711 setup_target_debug (void)
4712 {
4713   memcpy (&debug_target, &current_target, sizeof debug_target);
4714
4715   current_target.to_open = debug_to_open;
4716   current_target.to_post_attach = debug_to_post_attach;
4717   current_target.to_prepare_to_store = debug_to_prepare_to_store;
4718   current_target.deprecated_xfer_memory = deprecated_debug_xfer_memory;
4719   current_target.to_files_info = debug_to_files_info;
4720   current_target.to_insert_breakpoint = debug_to_insert_breakpoint;
4721   current_target.to_remove_breakpoint = debug_to_remove_breakpoint;
4722   current_target.to_can_use_hw_breakpoint = debug_to_can_use_hw_breakpoint;
4723   current_target.to_insert_hw_breakpoint = debug_to_insert_hw_breakpoint;
4724   current_target.to_remove_hw_breakpoint = debug_to_remove_hw_breakpoint;
4725   current_target.to_insert_watchpoint = debug_to_insert_watchpoint;
4726   current_target.to_remove_watchpoint = debug_to_remove_watchpoint;
4727   current_target.to_stopped_by_watchpoint = debug_to_stopped_by_watchpoint;
4728   current_target.to_stopped_data_address = debug_to_stopped_data_address;
4729   current_target.to_watchpoint_addr_within_range
4730     = debug_to_watchpoint_addr_within_range;
4731   current_target.to_region_ok_for_hw_watchpoint
4732     = debug_to_region_ok_for_hw_watchpoint;
4733   current_target.to_can_accel_watchpoint_condition
4734     = debug_to_can_accel_watchpoint_condition;
4735   current_target.to_terminal_init = debug_to_terminal_init;
4736   current_target.to_terminal_inferior = debug_to_terminal_inferior;
4737   current_target.to_terminal_ours_for_output
4738     = debug_to_terminal_ours_for_output;
4739   current_target.to_terminal_ours = debug_to_terminal_ours;
4740   current_target.to_terminal_save_ours = debug_to_terminal_save_ours;
4741   current_target.to_terminal_info = debug_to_terminal_info;
4742   current_target.to_load = debug_to_load;
4743   current_target.to_post_startup_inferior = debug_to_post_startup_inferior;
4744   current_target.to_insert_fork_catchpoint = debug_to_insert_fork_catchpoint;
4745   current_target.to_remove_fork_catchpoint = debug_to_remove_fork_catchpoint;
4746   current_target.to_insert_vfork_catchpoint = debug_to_insert_vfork_catchpoint;
4747   current_target.to_remove_vfork_catchpoint = debug_to_remove_vfork_catchpoint;
4748   current_target.to_insert_exec_catchpoint = debug_to_insert_exec_catchpoint;
4749   current_target.to_remove_exec_catchpoint = debug_to_remove_exec_catchpoint;
4750   current_target.to_has_exited = debug_to_has_exited;
4751   current_target.to_can_run = debug_to_can_run;
4752   current_target.to_stop = debug_to_stop;
4753   current_target.to_rcmd = debug_to_rcmd;
4754   current_target.to_pid_to_exec_file = debug_to_pid_to_exec_file;
4755   current_target.to_thread_architecture = debug_to_thread_architecture;
4756 }
4757 \f
4758
4759 static char targ_desc[] =
4760 "Names of targets and files being debugged.\nShows the entire \
4761 stack of targets currently in use (including the exec-file,\n\
4762 core-file, and process, if any), as well as the symbol file name.";
4763
4764 static void
4765 default_rcmd (struct target_ops *self, char *command, struct ui_file *output)
4766 {
4767   error (_("\"monitor\" command not supported by this target."));
4768 }
4769
4770 static void
4771 do_monitor_command (char *cmd,
4772                  int from_tty)
4773 {
4774   target_rcmd (cmd, gdb_stdtarg);
4775 }
4776
4777 /* Print the name of each layers of our target stack.  */
4778
4779 static void
4780 maintenance_print_target_stack (char *cmd, int from_tty)
4781 {
4782   struct target_ops *t;
4783
4784   printf_filtered (_("The current target stack is:\n"));
4785
4786   for (t = target_stack; t != NULL; t = t->beneath)
4787     {
4788       printf_filtered ("  - %s (%s)\n", t->to_shortname, t->to_longname);
4789     }
4790 }
4791
4792 /* Controls if async mode is permitted.  */
4793 int target_async_permitted = 0;
4794
4795 /* The set command writes to this variable.  If the inferior is
4796    executing, target_async_permitted is *not* updated.  */
4797 static int target_async_permitted_1 = 0;
4798
4799 static void
4800 set_target_async_command (char *args, int from_tty,
4801                           struct cmd_list_element *c)
4802 {
4803   if (have_live_inferiors ())
4804     {
4805       target_async_permitted_1 = target_async_permitted;
4806       error (_("Cannot change this setting while the inferior is running."));
4807     }
4808
4809   target_async_permitted = target_async_permitted_1;
4810 }
4811
4812 static void
4813 show_target_async_command (struct ui_file *file, int from_tty,
4814                            struct cmd_list_element *c,
4815                            const char *value)
4816 {
4817   fprintf_filtered (file,
4818                     _("Controlling the inferior in "
4819                       "asynchronous mode is %s.\n"), value);
4820 }
4821
4822 /* Temporary copies of permission settings.  */
4823
4824 static int may_write_registers_1 = 1;
4825 static int may_write_memory_1 = 1;
4826 static int may_insert_breakpoints_1 = 1;
4827 static int may_insert_tracepoints_1 = 1;
4828 static int may_insert_fast_tracepoints_1 = 1;
4829 static int may_stop_1 = 1;
4830
4831 /* Make the user-set values match the real values again.  */
4832
4833 void
4834 update_target_permissions (void)
4835 {
4836   may_write_registers_1 = may_write_registers;
4837   may_write_memory_1 = may_write_memory;
4838   may_insert_breakpoints_1 = may_insert_breakpoints;
4839   may_insert_tracepoints_1 = may_insert_tracepoints;
4840   may_insert_fast_tracepoints_1 = may_insert_fast_tracepoints;
4841   may_stop_1 = may_stop;
4842 }
4843
4844 /* The one function handles (most of) the permission flags in the same
4845    way.  */
4846
4847 static void
4848 set_target_permissions (char *args, int from_tty,
4849                         struct cmd_list_element *c)
4850 {
4851   if (target_has_execution)
4852     {
4853       update_target_permissions ();
4854       error (_("Cannot change this setting while the inferior is running."));
4855     }
4856
4857   /* Make the real values match the user-changed values.  */
4858   may_write_registers = may_write_registers_1;
4859   may_insert_breakpoints = may_insert_breakpoints_1;
4860   may_insert_tracepoints = may_insert_tracepoints_1;
4861   may_insert_fast_tracepoints = may_insert_fast_tracepoints_1;
4862   may_stop = may_stop_1;
4863   update_observer_mode ();
4864 }
4865
4866 /* Set memory write permission independently of observer mode.  */
4867
4868 static void
4869 set_write_memory_permission (char *args, int from_tty,
4870                         struct cmd_list_element *c)
4871 {
4872   /* Make the real values match the user-changed values.  */
4873   may_write_memory = may_write_memory_1;
4874   update_observer_mode ();
4875 }
4876
4877
4878 void
4879 initialize_targets (void)
4880 {
4881   init_dummy_target ();
4882   push_target (&dummy_target);
4883
4884   add_info ("target", target_info, targ_desc);
4885   add_info ("files", target_info, targ_desc);
4886
4887   add_setshow_zuinteger_cmd ("target", class_maintenance, &targetdebug, _("\
4888 Set target debugging."), _("\
4889 Show target debugging."), _("\
4890 When non-zero, target debugging is enabled.  Higher numbers are more\n\
4891 verbose.  Changes do not take effect until the next \"run\" or \"target\"\n\
4892 command."),
4893                              NULL,
4894                              show_targetdebug,
4895                              &setdebuglist, &showdebuglist);
4896
4897   add_setshow_boolean_cmd ("trust-readonly-sections", class_support,
4898                            &trust_readonly, _("\
4899 Set mode for reading from readonly sections."), _("\
4900 Show mode for reading from readonly sections."), _("\
4901 When this mode is on, memory reads from readonly sections (such as .text)\n\
4902 will be read from the object file instead of from the target.  This will\n\
4903 result in significant performance improvement for remote targets."),
4904                            NULL,
4905                            show_trust_readonly,
4906                            &setlist, &showlist);
4907
4908   add_com ("monitor", class_obscure, do_monitor_command,
4909            _("Send a command to the remote monitor (remote targets only)."));
4910
4911   add_cmd ("target-stack", class_maintenance, maintenance_print_target_stack,
4912            _("Print the name of each layer of the internal target stack."),
4913            &maintenanceprintlist);
4914
4915   add_setshow_boolean_cmd ("target-async", no_class,
4916                            &target_async_permitted_1, _("\
4917 Set whether gdb controls the inferior in asynchronous mode."), _("\
4918 Show whether gdb controls the inferior in asynchronous mode."), _("\
4919 Tells gdb whether to control the inferior in asynchronous mode."),
4920                            set_target_async_command,
4921                            show_target_async_command,
4922                            &setlist,
4923                            &showlist);
4924
4925   add_setshow_boolean_cmd ("may-write-registers", class_support,
4926                            &may_write_registers_1, _("\
4927 Set permission to write into registers."), _("\
4928 Show permission to write into registers."), _("\
4929 When this permission is on, GDB may write into the target's registers.\n\
4930 Otherwise, any sort of write attempt will result in an error."),
4931                            set_target_permissions, NULL,
4932                            &setlist, &showlist);
4933
4934   add_setshow_boolean_cmd ("may-write-memory", class_support,
4935                            &may_write_memory_1, _("\
4936 Set permission to write into target memory."), _("\
4937 Show permission to write into target memory."), _("\
4938 When this permission is on, GDB may write into the target's memory.\n\
4939 Otherwise, any sort of write attempt will result in an error."),
4940                            set_write_memory_permission, NULL,
4941                            &setlist, &showlist);
4942
4943   add_setshow_boolean_cmd ("may-insert-breakpoints", class_support,
4944                            &may_insert_breakpoints_1, _("\
4945 Set permission to insert breakpoints in the target."), _("\
4946 Show permission to insert breakpoints in the target."), _("\
4947 When this permission is on, GDB may insert breakpoints in the program.\n\
4948 Otherwise, any sort of insertion attempt will result in an error."),
4949                            set_target_permissions, NULL,
4950                            &setlist, &showlist);
4951
4952   add_setshow_boolean_cmd ("may-insert-tracepoints", class_support,
4953                            &may_insert_tracepoints_1, _("\
4954 Set permission to insert tracepoints in the target."), _("\
4955 Show permission to insert tracepoints in the target."), _("\
4956 When this permission is on, GDB may insert tracepoints in the program.\n\
4957 Otherwise, any sort of insertion attempt will result in an error."),
4958                            set_target_permissions, NULL,
4959                            &setlist, &showlist);
4960
4961   add_setshow_boolean_cmd ("may-insert-fast-tracepoints", class_support,
4962                            &may_insert_fast_tracepoints_1, _("\
4963 Set permission to insert fast tracepoints in the target."), _("\
4964 Show permission to insert fast tracepoints in the target."), _("\
4965 When this permission is on, GDB may insert fast tracepoints.\n\
4966 Otherwise, any sort of insertion attempt will result in an error."),
4967                            set_target_permissions, NULL,
4968                            &setlist, &showlist);
4969
4970   add_setshow_boolean_cmd ("may-interrupt", class_support,
4971                            &may_stop_1, _("\
4972 Set permission to interrupt or signal the target."), _("\
4973 Show permission to interrupt or signal the target."), _("\
4974 When this permission is on, GDB may interrupt/stop the target's execution.\n\
4975 Otherwise, any attempt to interrupt or stop will be ignored."),
4976                            set_target_permissions, NULL,
4977                            &setlist, &showlist);
4978 }