New "find" command.
[external/binutils.git] / gdb / target.c
1 /* Select target systems and architectures at runtime for GDB.
2
3    Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4    2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
5    Free Software Foundation, Inc.
6
7    Contributed by Cygnus Support.
8
9    This file is part of GDB.
10
11    This program is free software; you can redistribute it and/or modify
12    it under the terms of the GNU General Public License as published by
13    the Free Software Foundation; either version 3 of the License, or
14    (at your option) any later version.
15
16    This program is distributed in the hope that it will be useful,
17    but WITHOUT ANY WARRANTY; without even the implied warranty of
18    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19    GNU General Public License for more details.
20
21    You should have received a copy of the GNU General Public License
22    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
23
24 #include "defs.h"
25 #include <errno.h>
26 #include "gdb_string.h"
27 #include "target.h"
28 #include "gdbcmd.h"
29 #include "symtab.h"
30 #include "inferior.h"
31 #include "bfd.h"
32 #include "symfile.h"
33 #include "objfiles.h"
34 #include "gdb_wait.h"
35 #include "dcache.h"
36 #include <signal.h>
37 #include "regcache.h"
38 #include "gdb_assert.h"
39 #include "gdbcore.h"
40 #include "exceptions.h"
41 #include "target-descriptions.h"
42 #include "gdb_stdint.h"
43
44 static void target_info (char *, int);
45
46 static void maybe_kill_then_attach (char *, int);
47
48 static void kill_or_be_killed (int);
49
50 static void default_terminal_info (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 (CORE_ADDR, int);
56
57 static int nosymbol (char *, CORE_ADDR *);
58
59 static void tcomplain (void) ATTR_NORETURN;
60
61 static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *);
62
63 static int return_zero (void);
64
65 static int return_one (void);
66
67 static int return_minus_one (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 void nosupport_runtime (void);
76
77 static LONGEST default_xfer_partial (struct target_ops *ops,
78                                      enum target_object object,
79                                      const char *annex, gdb_byte *readbuf,
80                                      const gdb_byte *writebuf,
81                                      ULONGEST offset, LONGEST len);
82
83 static LONGEST current_xfer_partial (struct target_ops *ops,
84                                      enum target_object object,
85                                      const char *annex, gdb_byte *readbuf,
86                                      const gdb_byte *writebuf,
87                                      ULONGEST offset, LONGEST len);
88
89 static LONGEST target_xfer_partial (struct target_ops *ops,
90                                     enum target_object object,
91                                     const char *annex,
92                                     void *readbuf, const void *writebuf,
93                                     ULONGEST offset, LONGEST len);
94
95 static void init_dummy_target (void);
96
97 static struct target_ops debug_target;
98
99 static void debug_to_open (char *, int);
100
101 static void debug_to_close (int);
102
103 static void debug_to_attach (char *, int);
104
105 static void debug_to_detach (char *, int);
106
107 static void debug_to_resume (ptid_t, int, enum target_signal);
108
109 static ptid_t debug_to_wait (ptid_t, struct target_waitstatus *);
110
111 static void debug_to_fetch_registers (struct regcache *, int);
112
113 static void debug_to_store_registers (struct regcache *, int);
114
115 static void debug_to_prepare_to_store (struct regcache *);
116
117 static void debug_to_files_info (struct target_ops *);
118
119 static int debug_to_insert_breakpoint (struct bp_target_info *);
120
121 static int debug_to_remove_breakpoint (struct bp_target_info *);
122
123 static int debug_to_can_use_hw_breakpoint (int, int, int);
124
125 static int debug_to_insert_hw_breakpoint (struct bp_target_info *);
126
127 static int debug_to_remove_hw_breakpoint (struct bp_target_info *);
128
129 static int debug_to_insert_watchpoint (CORE_ADDR, int, int);
130
131 static int debug_to_remove_watchpoint (CORE_ADDR, int, int);
132
133 static int debug_to_stopped_by_watchpoint (void);
134
135 static int debug_to_stopped_data_address (struct target_ops *, CORE_ADDR *);
136
137 static int debug_to_watchpoint_addr_within_range (struct target_ops *,
138                                                   CORE_ADDR, CORE_ADDR, int);
139
140 static int debug_to_region_ok_for_hw_watchpoint (CORE_ADDR, int);
141
142 static void debug_to_terminal_init (void);
143
144 static void debug_to_terminal_inferior (void);
145
146 static void debug_to_terminal_ours_for_output (void);
147
148 static void debug_to_terminal_save_ours (void);
149
150 static void debug_to_terminal_ours (void);
151
152 static void debug_to_terminal_info (char *, int);
153
154 static void debug_to_kill (void);
155
156 static void debug_to_load (char *, int);
157
158 static int debug_to_lookup_symbol (char *, CORE_ADDR *);
159
160 static void debug_to_mourn_inferior (void);
161
162 static int debug_to_can_run (void);
163
164 static void debug_to_notice_signals (ptid_t);
165
166 static int debug_to_thread_alive (ptid_t);
167
168 static void debug_to_stop (void);
169
170 /* NOTE: cagney/2004-09-29: Many targets reference this variable in
171    wierd and mysterious ways.  Putting the variable here lets those
172    wierd and mysterious ways keep building while they are being
173    converted to the inferior inheritance structure.  */
174 struct target_ops deprecated_child_ops;
175
176 /* Pointer to array of target architecture structures; the size of the
177    array; the current index into the array; the allocated size of the
178    array.  */
179 struct target_ops **target_structs;
180 unsigned target_struct_size;
181 unsigned target_struct_index;
182 unsigned target_struct_allocsize;
183 #define DEFAULT_ALLOCSIZE       10
184
185 /* The initial current target, so that there is always a semi-valid
186    current target.  */
187
188 static struct target_ops dummy_target;
189
190 /* Top of target stack.  */
191
192 static struct target_ops *target_stack;
193
194 /* The target structure we are currently using to talk to a process
195    or file or whatever "inferior" we have.  */
196
197 struct target_ops current_target;
198
199 /* Command list for target.  */
200
201 static struct cmd_list_element *targetlist = NULL;
202
203 /* Nonzero if we are debugging an attached outside process
204    rather than an inferior.  */
205
206 int attach_flag;
207
208 /* Nonzero if we should trust readonly sections from the
209    executable when reading memory.  */
210
211 static int trust_readonly = 0;
212
213 /* Nonzero if we should show true memory content including
214    memory breakpoint inserted by gdb.  */
215
216 static int show_memory_breakpoints = 0;
217
218 /* Non-zero if we want to see trace of target level stuff.  */
219
220 static int targetdebug = 0;
221 static void
222 show_targetdebug (struct ui_file *file, int from_tty,
223                   struct cmd_list_element *c, const char *value)
224 {
225   fprintf_filtered (file, _("Target debugging is %s.\n"), value);
226 }
227
228 static void setup_target_debug (void);
229
230 DCACHE *target_dcache;
231
232 /* The user just typed 'target' without the name of a target.  */
233
234 static void
235 target_command (char *arg, int from_tty)
236 {
237   fputs_filtered ("Argument required (target name).  Try `help target'\n",
238                   gdb_stdout);
239 }
240
241 /* Add a possible target architecture to the list.  */
242
243 void
244 add_target (struct target_ops *t)
245 {
246   /* Provide default values for all "must have" methods.  */
247   if (t->to_xfer_partial == NULL)
248     t->to_xfer_partial = default_xfer_partial;
249
250   if (!target_structs)
251     {
252       target_struct_allocsize = DEFAULT_ALLOCSIZE;
253       target_structs = (struct target_ops **) xmalloc
254         (target_struct_allocsize * sizeof (*target_structs));
255     }
256   if (target_struct_size >= target_struct_allocsize)
257     {
258       target_struct_allocsize *= 2;
259       target_structs = (struct target_ops **)
260         xrealloc ((char *) target_structs,
261                   target_struct_allocsize * sizeof (*target_structs));
262     }
263   target_structs[target_struct_size++] = t;
264
265   if (targetlist == NULL)
266     add_prefix_cmd ("target", class_run, target_command, _("\
267 Connect to a target machine or process.\n\
268 The first argument is the type or protocol of the target machine.\n\
269 Remaining arguments are interpreted by the target protocol.  For more\n\
270 information on the arguments for a particular protocol, type\n\
271 `help target ' followed by the protocol name."),
272                     &targetlist, "target ", 0, &cmdlist);
273   add_cmd (t->to_shortname, no_class, t->to_open, t->to_doc, &targetlist);
274 }
275
276 /* Stub functions */
277
278 void
279 target_ignore (void)
280 {
281 }
282
283 void
284 target_load (char *arg, int from_tty)
285 {
286   dcache_invalidate (target_dcache);
287   (*current_target.to_load) (arg, from_tty);
288 }
289
290 static int
291 nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write,
292           struct target_ops *t)
293 {
294   errno = EIO;                  /* Can't read/write this location */
295   return 0;                     /* No bytes handled */
296 }
297
298 static void
299 tcomplain (void)
300 {
301   error (_("You can't do that when your target is `%s'"),
302          current_target.to_shortname);
303 }
304
305 void
306 noprocess (void)
307 {
308   error (_("You can't do that without a process to debug."));
309 }
310
311 static int
312 nosymbol (char *name, CORE_ADDR *addrp)
313 {
314   return 1;                     /* Symbol does not exist in target env */
315 }
316
317 static void
318 nosupport_runtime (void)
319 {
320   if (ptid_equal (inferior_ptid, null_ptid))
321     noprocess ();
322   else
323     error (_("No run-time support for this"));
324 }
325
326
327 static void
328 default_terminal_info (char *args, int from_tty)
329 {
330   printf_unfiltered (_("No saved terminal information.\n"));
331 }
332
333 /* This is the default target_create_inferior and target_attach function.
334    If the current target is executing, it asks whether to kill it off.
335    If this function returns without calling error(), it has killed off
336    the target, and the operation should be attempted.  */
337
338 static void
339 kill_or_be_killed (int from_tty)
340 {
341   if (target_has_execution)
342     {
343       printf_unfiltered (_("You are already running a program:\n"));
344       target_files_info ();
345       if (query ("Kill it? "))
346         {
347           target_kill ();
348           if (target_has_execution)
349             error (_("Killing the program did not help."));
350           return;
351         }
352       else
353         {
354           error (_("Program not killed."));
355         }
356     }
357   tcomplain ();
358 }
359
360 static void
361 maybe_kill_then_attach (char *args, int from_tty)
362 {
363   kill_or_be_killed (from_tty);
364   target_attach (args, from_tty);
365 }
366
367 static void
368 maybe_kill_then_create_inferior (char *exec, char *args, char **env,
369                                  int from_tty)
370 {
371   kill_or_be_killed (0);
372   target_create_inferior (exec, args, env, from_tty);
373 }
374
375 /* Go through the target stack from top to bottom, copying over zero
376    entries in current_target, then filling in still empty entries.  In
377    effect, we are doing class inheritance through the pushed target
378    vectors.
379
380    NOTE: cagney/2003-10-17: The problem with this inheritance, as it
381    is currently implemented, is that it discards any knowledge of
382    which target an inherited method originally belonged to.
383    Consequently, new new target methods should instead explicitly and
384    locally search the target stack for the target that can handle the
385    request.  */
386
387 static void
388 update_current_target (void)
389 {
390   struct target_ops *t;
391
392   /* First, reset current's contents.  */
393   memset (&current_target, 0, sizeof (current_target));
394
395 #define INHERIT(FIELD, TARGET) \
396       if (!current_target.FIELD) \
397         current_target.FIELD = (TARGET)->FIELD
398
399   for (t = target_stack; t; t = t->beneath)
400     {
401       INHERIT (to_shortname, t);
402       INHERIT (to_longname, t);
403       INHERIT (to_doc, t);
404       INHERIT (to_open, t);
405       INHERIT (to_close, t);
406       INHERIT (to_attach, t);
407       INHERIT (to_post_attach, t);
408       INHERIT (to_detach, t);
409       /* Do not inherit to_disconnect.  */
410       INHERIT (to_resume, t);
411       INHERIT (to_wait, t);
412       INHERIT (to_fetch_registers, t);
413       INHERIT (to_store_registers, t);
414       INHERIT (to_prepare_to_store, t);
415       INHERIT (deprecated_xfer_memory, t);
416       INHERIT (to_files_info, t);
417       INHERIT (to_insert_breakpoint, t);
418       INHERIT (to_remove_breakpoint, t);
419       INHERIT (to_can_use_hw_breakpoint, t);
420       INHERIT (to_insert_hw_breakpoint, t);
421       INHERIT (to_remove_hw_breakpoint, t);
422       INHERIT (to_insert_watchpoint, t);
423       INHERIT (to_remove_watchpoint, t);
424       INHERIT (to_stopped_data_address, t);
425       INHERIT (to_have_steppable_watchpoint, t);
426       INHERIT (to_have_continuable_watchpoint, t);
427       INHERIT (to_stopped_by_watchpoint, t);
428       INHERIT (to_watchpoint_addr_within_range, t);
429       INHERIT (to_region_ok_for_hw_watchpoint, t);
430       INHERIT (to_terminal_init, t);
431       INHERIT (to_terminal_inferior, t);
432       INHERIT (to_terminal_ours_for_output, t);
433       INHERIT (to_terminal_ours, t);
434       INHERIT (to_terminal_save_ours, t);
435       INHERIT (to_terminal_info, t);
436       INHERIT (to_kill, t);
437       INHERIT (to_load, t);
438       INHERIT (to_lookup_symbol, t);
439       INHERIT (to_create_inferior, t);
440       INHERIT (to_post_startup_inferior, t);
441       INHERIT (to_acknowledge_created_inferior, t);
442       INHERIT (to_insert_fork_catchpoint, t);
443       INHERIT (to_remove_fork_catchpoint, t);
444       INHERIT (to_insert_vfork_catchpoint, t);
445       INHERIT (to_remove_vfork_catchpoint, t);
446       /* Do not inherit to_follow_fork.  */
447       INHERIT (to_insert_exec_catchpoint, t);
448       INHERIT (to_remove_exec_catchpoint, t);
449       INHERIT (to_has_exited, t);
450       INHERIT (to_mourn_inferior, t);
451       INHERIT (to_can_run, t);
452       INHERIT (to_notice_signals, t);
453       INHERIT (to_thread_alive, t);
454       INHERIT (to_find_new_threads, t);
455       INHERIT (to_pid_to_str, t);
456       INHERIT (to_extra_thread_info, t);
457       INHERIT (to_stop, t);
458       /* Do not inherit to_xfer_partial.  */
459       INHERIT (to_rcmd, t);
460       INHERIT (to_pid_to_exec_file, t);
461       INHERIT (to_log_command, t);
462       INHERIT (to_stratum, t);
463       INHERIT (to_has_all_memory, t);
464       INHERIT (to_has_memory, t);
465       INHERIT (to_has_stack, t);
466       INHERIT (to_has_registers, t);
467       INHERIT (to_has_execution, t);
468       INHERIT (to_has_thread_control, t);
469       INHERIT (to_sections, t);
470       INHERIT (to_sections_end, t);
471       INHERIT (to_can_async_p, t);
472       INHERIT (to_is_async_p, t);
473       INHERIT (to_async, t);
474       INHERIT (to_async_mask, t);
475       INHERIT (to_find_memory_regions, t);
476       INHERIT (to_make_corefile_notes, t);
477       INHERIT (to_get_thread_local_address, t);
478       /* Do not inherit to_read_description.  */
479       /* Do not inherit to_search_memory.  */
480       INHERIT (to_magic, t);
481       /* Do not inherit to_memory_map.  */
482       /* Do not inherit to_flash_erase.  */
483       /* Do not inherit to_flash_done.  */
484     }
485 #undef INHERIT
486
487   /* Clean up a target struct so it no longer has any zero pointers in
488      it.  Some entries are defaulted to a method that print an error,
489      others are hard-wired to a standard recursive default.  */
490
491 #define de_fault(field, value) \
492   if (!current_target.field)               \
493     current_target.field = value
494
495   de_fault (to_open,
496             (void (*) (char *, int))
497             tcomplain);
498   de_fault (to_close,
499             (void (*) (int))
500             target_ignore);
501   de_fault (to_attach,
502             maybe_kill_then_attach);
503   de_fault (to_post_attach,
504             (void (*) (int))
505             target_ignore);
506   de_fault (to_detach,
507             (void (*) (char *, int))
508             target_ignore);
509   de_fault (to_resume,
510             (void (*) (ptid_t, int, enum target_signal))
511             noprocess);
512   de_fault (to_wait,
513             (ptid_t (*) (ptid_t, struct target_waitstatus *))
514             noprocess);
515   de_fault (to_fetch_registers,
516             (void (*) (struct regcache *, int))
517             target_ignore);
518   de_fault (to_store_registers,
519             (void (*) (struct regcache *, int))
520             noprocess);
521   de_fault (to_prepare_to_store,
522             (void (*) (struct regcache *))
523             noprocess);
524   de_fault (deprecated_xfer_memory,
525             (int (*) (CORE_ADDR, gdb_byte *, int, int, struct mem_attrib *, struct target_ops *))
526             nomemory);
527   de_fault (to_files_info,
528             (void (*) (struct target_ops *))
529             target_ignore);
530   de_fault (to_insert_breakpoint,
531             memory_insert_breakpoint);
532   de_fault (to_remove_breakpoint,
533             memory_remove_breakpoint);
534   de_fault (to_can_use_hw_breakpoint,
535             (int (*) (int, int, int))
536             return_zero);
537   de_fault (to_insert_hw_breakpoint,
538             (int (*) (struct bp_target_info *))
539             return_minus_one);
540   de_fault (to_remove_hw_breakpoint,
541             (int (*) (struct bp_target_info *))
542             return_minus_one);
543   de_fault (to_insert_watchpoint,
544             (int (*) (CORE_ADDR, int, int))
545             return_minus_one);
546   de_fault (to_remove_watchpoint,
547             (int (*) (CORE_ADDR, int, int))
548             return_minus_one);
549   de_fault (to_stopped_by_watchpoint,
550             (int (*) (void))
551             return_zero);
552   de_fault (to_stopped_data_address,
553             (int (*) (struct target_ops *, CORE_ADDR *))
554             return_zero);
555   de_fault (to_watchpoint_addr_within_range,
556             default_watchpoint_addr_within_range);
557   de_fault (to_region_ok_for_hw_watchpoint,
558             default_region_ok_for_hw_watchpoint);
559   de_fault (to_terminal_init,
560             (void (*) (void))
561             target_ignore);
562   de_fault (to_terminal_inferior,
563             (void (*) (void))
564             target_ignore);
565   de_fault (to_terminal_ours_for_output,
566             (void (*) (void))
567             target_ignore);
568   de_fault (to_terminal_ours,
569             (void (*) (void))
570             target_ignore);
571   de_fault (to_terminal_save_ours,
572             (void (*) (void))
573             target_ignore);
574   de_fault (to_terminal_info,
575             default_terminal_info);
576   de_fault (to_kill,
577             (void (*) (void))
578             noprocess);
579   de_fault (to_load,
580             (void (*) (char *, int))
581             tcomplain);
582   de_fault (to_lookup_symbol,
583             (int (*) (char *, CORE_ADDR *))
584             nosymbol);
585   de_fault (to_create_inferior,
586             maybe_kill_then_create_inferior);
587   de_fault (to_post_startup_inferior,
588             (void (*) (ptid_t))
589             target_ignore);
590   de_fault (to_acknowledge_created_inferior,
591             (void (*) (int))
592             target_ignore);
593   de_fault (to_insert_fork_catchpoint,
594             (void (*) (int))
595             tcomplain);
596   de_fault (to_remove_fork_catchpoint,
597             (int (*) (int))
598             tcomplain);
599   de_fault (to_insert_vfork_catchpoint,
600             (void (*) (int))
601             tcomplain);
602   de_fault (to_remove_vfork_catchpoint,
603             (int (*) (int))
604             tcomplain);
605   de_fault (to_insert_exec_catchpoint,
606             (void (*) (int))
607             tcomplain);
608   de_fault (to_remove_exec_catchpoint,
609             (int (*) (int))
610             tcomplain);
611   de_fault (to_has_exited,
612             (int (*) (int, int, int *))
613             return_zero);
614   de_fault (to_mourn_inferior,
615             (void (*) (void))
616             noprocess);
617   de_fault (to_can_run,
618             return_zero);
619   de_fault (to_notice_signals,
620             (void (*) (ptid_t))
621             target_ignore);
622   de_fault (to_thread_alive,
623             (int (*) (ptid_t))
624             return_zero);
625   de_fault (to_find_new_threads,
626             (void (*) (void))
627             target_ignore);
628   de_fault (to_extra_thread_info,
629             (char *(*) (struct thread_info *))
630             return_zero);
631   de_fault (to_stop,
632             (void (*) (void))
633             target_ignore);
634   current_target.to_xfer_partial = current_xfer_partial;
635   de_fault (to_rcmd,
636             (void (*) (char *, struct ui_file *))
637             tcomplain);
638   de_fault (to_pid_to_exec_file,
639             (char *(*) (int))
640             return_zero);
641   de_fault (to_can_async_p,
642             (int (*) (void))
643             return_zero);
644   de_fault (to_is_async_p,
645             (int (*) (void))
646             return_zero);
647   de_fault (to_async,
648             (void (*) (void (*) (enum inferior_event_type, void*), void*))
649             tcomplain);
650   de_fault (to_async_mask,
651             (int (*) (int))
652             return_one);
653   current_target.to_read_description = NULL;
654 #undef de_fault
655
656   /* Finally, position the target-stack beneath the squashed
657      "current_target".  That way code looking for a non-inherited
658      target method can quickly and simply find it.  */
659   current_target.beneath = target_stack;
660
661   if (targetdebug)
662     setup_target_debug ();
663 }
664
665 /* Mark OPS as a running target.  This reverses the effect
666    of target_mark_exited.  */
667
668 void
669 target_mark_running (struct target_ops *ops)
670 {
671   struct target_ops *t;
672
673   for (t = target_stack; t != NULL; t = t->beneath)
674     if (t == ops)
675       break;
676   if (t == NULL)
677     internal_error (__FILE__, __LINE__,
678                     "Attempted to mark unpushed target \"%s\" as running",
679                     ops->to_shortname);
680
681   ops->to_has_execution = 1;
682   ops->to_has_all_memory = 1;
683   ops->to_has_memory = 1;
684   ops->to_has_stack = 1;
685   ops->to_has_registers = 1;
686
687   update_current_target ();
688 }
689
690 /* Mark OPS as a non-running target.  This reverses the effect
691    of target_mark_running.  */
692
693 void
694 target_mark_exited (struct target_ops *ops)
695 {
696   struct target_ops *t;
697
698   for (t = target_stack; t != NULL; t = t->beneath)
699     if (t == ops)
700       break;
701   if (t == NULL)
702     internal_error (__FILE__, __LINE__,
703                     "Attempted to mark unpushed target \"%s\" as running",
704                     ops->to_shortname);
705
706   ops->to_has_execution = 0;
707   ops->to_has_all_memory = 0;
708   ops->to_has_memory = 0;
709   ops->to_has_stack = 0;
710   ops->to_has_registers = 0;
711
712   update_current_target ();
713 }
714
715 /* Push a new target type into the stack of the existing target accessors,
716    possibly superseding some of the existing accessors.
717
718    Result is zero if the pushed target ended up on top of the stack,
719    nonzero if at least one target is on top of it.
720
721    Rather than allow an empty stack, we always have the dummy target at
722    the bottom stratum, so we can call the function vectors without
723    checking them.  */
724
725 int
726 push_target (struct target_ops *t)
727 {
728   struct target_ops **cur;
729
730   /* Check magic number.  If wrong, it probably means someone changed
731      the struct definition, but not all the places that initialize one.  */
732   if (t->to_magic != OPS_MAGIC)
733     {
734       fprintf_unfiltered (gdb_stderr,
735                           "Magic number of %s target struct wrong\n",
736                           t->to_shortname);
737       internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
738     }
739
740   /* Find the proper stratum to install this target in.  */
741   for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
742     {
743       if ((int) (t->to_stratum) >= (int) (*cur)->to_stratum)
744         break;
745     }
746
747   /* If there's already targets at this stratum, remove them.  */
748   /* FIXME: cagney/2003-10-15: I think this should be popping all
749      targets to CUR, and not just those at this stratum level.  */
750   while ((*cur) != NULL && t->to_stratum == (*cur)->to_stratum)
751     {
752       /* There's already something at this stratum level.  Close it,
753          and un-hook it from the stack.  */
754       struct target_ops *tmp = (*cur);
755       (*cur) = (*cur)->beneath;
756       tmp->beneath = NULL;
757       target_close (tmp, 0);
758     }
759
760   /* We have removed all targets in our stratum, now add the new one.  */
761   t->beneath = (*cur);
762   (*cur) = t;
763
764   update_current_target ();
765
766   /* Not on top?  */
767   return (t != target_stack);
768 }
769
770 /* Remove a target_ops vector from the stack, wherever it may be.
771    Return how many times it was removed (0 or 1).  */
772
773 int
774 unpush_target (struct target_ops *t)
775 {
776   struct target_ops **cur;
777   struct target_ops *tmp;
778
779   /* Look for the specified target.  Note that we assume that a target
780      can only occur once in the target stack. */
781
782   for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
783     {
784       if ((*cur) == t)
785         break;
786     }
787
788   if ((*cur) == NULL)
789     return 0;                   /* Didn't find target_ops, quit now */
790
791   /* NOTE: cagney/2003-12-06: In '94 the close call was made
792      unconditional by moving it to before the above check that the
793      target was in the target stack (something about "Change the way
794      pushing and popping of targets work to support target overlays
795      and inheritance").  This doesn't make much sense - only open
796      targets should be closed.  */
797   target_close (t, 0);
798
799   /* Unchain the target */
800   tmp = (*cur);
801   (*cur) = (*cur)->beneath;
802   tmp->beneath = NULL;
803
804   update_current_target ();
805
806   return 1;
807 }
808
809 void
810 pop_target (void)
811 {
812   target_close (&current_target, 0);    /* Let it clean up */
813   if (unpush_target (target_stack) == 1)
814     return;
815
816   fprintf_unfiltered (gdb_stderr,
817                       "pop_target couldn't find target %s\n",
818                       current_target.to_shortname);
819   internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
820 }
821
822 /* Using the objfile specified in OBJFILE, find the address for the
823    current thread's thread-local storage with offset OFFSET.  */
824 CORE_ADDR
825 target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset)
826 {
827   volatile CORE_ADDR addr = 0;
828
829   if (target_get_thread_local_address_p ()
830       && gdbarch_fetch_tls_load_module_address_p (current_gdbarch))
831     {
832       ptid_t ptid = inferior_ptid;
833       volatile struct gdb_exception ex;
834
835       TRY_CATCH (ex, RETURN_MASK_ALL)
836         {
837           CORE_ADDR lm_addr;
838           
839           /* Fetch the load module address for this objfile.  */
840           lm_addr = gdbarch_fetch_tls_load_module_address (current_gdbarch,
841                                                            objfile);
842           /* If it's 0, throw the appropriate exception.  */
843           if (lm_addr == 0)
844             throw_error (TLS_LOAD_MODULE_NOT_FOUND_ERROR,
845                          _("TLS load module not found"));
846
847           addr = target_get_thread_local_address (ptid, lm_addr, offset);
848         }
849       /* If an error occurred, print TLS related messages here.  Otherwise,
850          throw the error to some higher catcher.  */
851       if (ex.reason < 0)
852         {
853           int objfile_is_library = (objfile->flags & OBJF_SHARED);
854
855           switch (ex.error)
856             {
857             case TLS_NO_LIBRARY_SUPPORT_ERROR:
858               error (_("Cannot find thread-local variables in this thread library."));
859               break;
860             case TLS_LOAD_MODULE_NOT_FOUND_ERROR:
861               if (objfile_is_library)
862                 error (_("Cannot find shared library `%s' in dynamic"
863                          " linker's load module list"), objfile->name);
864               else
865                 error (_("Cannot find executable file `%s' in dynamic"
866                          " linker's load module list"), objfile->name);
867               break;
868             case TLS_NOT_ALLOCATED_YET_ERROR:
869               if (objfile_is_library)
870                 error (_("The inferior has not yet allocated storage for"
871                          " thread-local variables in\n"
872                          "the shared library `%s'\n"
873                          "for %s"),
874                        objfile->name, target_pid_to_str (ptid));
875               else
876                 error (_("The inferior has not yet allocated storage for"
877                          " thread-local variables in\n"
878                          "the executable `%s'\n"
879                          "for %s"),
880                        objfile->name, target_pid_to_str (ptid));
881               break;
882             case TLS_GENERIC_ERROR:
883               if (objfile_is_library)
884                 error (_("Cannot find thread-local storage for %s, "
885                          "shared library %s:\n%s"),
886                        target_pid_to_str (ptid),
887                        objfile->name, ex.message);
888               else
889                 error (_("Cannot find thread-local storage for %s, "
890                          "executable file %s:\n%s"),
891                        target_pid_to_str (ptid),
892                        objfile->name, ex.message);
893               break;
894             default:
895               throw_exception (ex);
896               break;
897             }
898         }
899     }
900   /* It wouldn't be wrong here to try a gdbarch method, too; finding
901      TLS is an ABI-specific thing.  But we don't do that yet.  */
902   else
903     error (_("Cannot find thread-local variables on this target"));
904
905   return addr;
906 }
907
908 #undef  MIN
909 #define MIN(A, B) (((A) <= (B)) ? (A) : (B))
910
911 /* target_read_string -- read a null terminated string, up to LEN bytes,
912    from MEMADDR in target.  Set *ERRNOP to the errno code, or 0 if successful.
913    Set *STRING to a pointer to malloc'd memory containing the data; the caller
914    is responsible for freeing it.  Return the number of bytes successfully
915    read.  */
916
917 int
918 target_read_string (CORE_ADDR memaddr, char **string, int len, int *errnop)
919 {
920   int tlen, origlen, offset, i;
921   gdb_byte buf[4];
922   int errcode = 0;
923   char *buffer;
924   int buffer_allocated;
925   char *bufptr;
926   unsigned int nbytes_read = 0;
927
928   gdb_assert (string);
929
930   /* Small for testing.  */
931   buffer_allocated = 4;
932   buffer = xmalloc (buffer_allocated);
933   bufptr = buffer;
934
935   origlen = len;
936
937   while (len > 0)
938     {
939       tlen = MIN (len, 4 - (memaddr & 3));
940       offset = memaddr & 3;
941
942       errcode = target_read_memory (memaddr & ~3, buf, sizeof buf);
943       if (errcode != 0)
944         {
945           /* The transfer request might have crossed the boundary to an
946              unallocated region of memory. Retry the transfer, requesting
947              a single byte.  */
948           tlen = 1;
949           offset = 0;
950           errcode = target_read_memory (memaddr, buf, 1);
951           if (errcode != 0)
952             goto done;
953         }
954
955       if (bufptr - buffer + tlen > buffer_allocated)
956         {
957           unsigned int bytes;
958           bytes = bufptr - buffer;
959           buffer_allocated *= 2;
960           buffer = xrealloc (buffer, buffer_allocated);
961           bufptr = buffer + bytes;
962         }
963
964       for (i = 0; i < tlen; i++)
965         {
966           *bufptr++ = buf[i + offset];
967           if (buf[i + offset] == '\000')
968             {
969               nbytes_read += i + 1;
970               goto done;
971             }
972         }
973
974       memaddr += tlen;
975       len -= tlen;
976       nbytes_read += tlen;
977     }
978 done:
979   *string = buffer;
980   if (errnop != NULL)
981     *errnop = errcode;
982   return nbytes_read;
983 }
984
985 /* Find a section containing ADDR.  */
986 struct section_table *
987 target_section_by_addr (struct target_ops *target, CORE_ADDR addr)
988 {
989   struct section_table *secp;
990   for (secp = target->to_sections;
991        secp < target->to_sections_end;
992        secp++)
993     {
994       if (addr >= secp->addr && addr < secp->endaddr)
995         return secp;
996     }
997   return NULL;
998 }
999
1000 /* Perform a partial memory transfer.  The arguments and return
1001    value are just as for target_xfer_partial.  */
1002
1003 static LONGEST
1004 memory_xfer_partial (struct target_ops *ops, void *readbuf, const void *writebuf,
1005                      ULONGEST memaddr, LONGEST len)
1006 {
1007   LONGEST res;
1008   int reg_len;
1009   struct mem_region *region;
1010
1011   /* Zero length requests are ok and require no work.  */
1012   if (len == 0)
1013     return 0;
1014
1015   /* Try the executable file, if "trust-readonly-sections" is set.  */
1016   if (readbuf != NULL && trust_readonly)
1017     {
1018       struct section_table *secp;
1019
1020       secp = target_section_by_addr (ops, memaddr);
1021       if (secp != NULL
1022           && (bfd_get_section_flags (secp->bfd, secp->the_bfd_section)
1023               & SEC_READONLY))
1024         return xfer_memory (memaddr, readbuf, len, 0, NULL, ops);
1025     }
1026
1027   /* Likewise for accesses to unmapped overlay sections.  */
1028   if (readbuf != NULL && overlay_debugging)
1029     {
1030       asection *section = find_pc_overlay (memaddr);
1031       if (pc_in_unmapped_range (memaddr, section))
1032         return xfer_memory (memaddr, readbuf, len, 0, NULL, ops);
1033     }
1034
1035   /* Try GDB's internal data cache.  */
1036   region = lookup_mem_region (memaddr);
1037   /* region->hi == 0 means there's no upper bound.  */
1038   if (memaddr + len < region->hi || region->hi == 0)
1039     reg_len = len;
1040   else
1041     reg_len = region->hi - memaddr;
1042
1043   switch (region->attrib.mode)
1044     {
1045     case MEM_RO:
1046       if (writebuf != NULL)
1047         return -1;
1048       break;
1049
1050     case MEM_WO:
1051       if (readbuf != NULL)
1052         return -1;
1053       break;
1054
1055     case MEM_FLASH:
1056       /* We only support writing to flash during "load" for now.  */
1057       if (writebuf != NULL)
1058         error (_("Writing to flash memory forbidden in this context"));
1059       break;
1060
1061     case MEM_NONE:
1062       return -1;
1063     }
1064
1065   if (region->attrib.cache)
1066     {
1067       /* FIXME drow/2006-08-09: This call discards OPS, so the raw
1068          memory request will start back at current_target.  */
1069       if (readbuf != NULL)
1070         res = dcache_xfer_memory (target_dcache, memaddr, readbuf,
1071                                   reg_len, 0);
1072       else
1073         /* FIXME drow/2006-08-09: If we're going to preserve const
1074            correctness dcache_xfer_memory should take readbuf and
1075            writebuf.  */
1076         res = dcache_xfer_memory (target_dcache, memaddr,
1077                                   (void *) writebuf,
1078                                   reg_len, 1);
1079       if (res <= 0)
1080         return -1;
1081       else
1082         {
1083           if (readbuf && !show_memory_breakpoints)
1084             breakpoint_restore_shadows (readbuf, memaddr, reg_len);
1085           return res;
1086         }
1087     }
1088
1089   /* If none of those methods found the memory we wanted, fall back
1090      to a target partial transfer.  Normally a single call to
1091      to_xfer_partial is enough; if it doesn't recognize an object
1092      it will call the to_xfer_partial of the next target down.
1093      But for memory this won't do.  Memory is the only target
1094      object which can be read from more than one valid target.
1095      A core file, for instance, could have some of memory but
1096      delegate other bits to the target below it.  So, we must
1097      manually try all targets.  */
1098
1099   do
1100     {
1101       res = ops->to_xfer_partial (ops, TARGET_OBJECT_MEMORY, NULL,
1102                                   readbuf, writebuf, memaddr, reg_len);
1103       if (res > 0)
1104         break;
1105
1106       /* We want to continue past core files to executables, but not
1107          past a running target's memory.  */
1108       if (ops->to_has_all_memory)
1109         break;
1110
1111       ops = ops->beneath;
1112     }
1113   while (ops != NULL);
1114
1115   if (readbuf && !show_memory_breakpoints)
1116     breakpoint_restore_shadows (readbuf, memaddr, reg_len);
1117
1118   /* If we still haven't got anything, return the last error.  We
1119      give up.  */
1120   return res;
1121 }
1122
1123 static void
1124 restore_show_memory_breakpoints (void *arg)
1125 {
1126   show_memory_breakpoints = (uintptr_t) arg;
1127 }
1128
1129 struct cleanup *
1130 make_show_memory_breakpoints_cleanup (int show)
1131 {
1132   int current = show_memory_breakpoints;
1133   show_memory_breakpoints = show;
1134
1135   return make_cleanup (restore_show_memory_breakpoints,
1136                        (void *) (uintptr_t) current);
1137 }
1138
1139 static LONGEST
1140 target_xfer_partial (struct target_ops *ops,
1141                      enum target_object object, const char *annex,
1142                      void *readbuf, const void *writebuf,
1143                      ULONGEST offset, LONGEST len)
1144 {
1145   LONGEST retval;
1146
1147   gdb_assert (ops->to_xfer_partial != NULL);
1148
1149   /* If this is a memory transfer, let the memory-specific code
1150      have a look at it instead.  Memory transfers are more
1151      complicated.  */
1152   if (object == TARGET_OBJECT_MEMORY)
1153     retval = memory_xfer_partial (ops, readbuf, writebuf, offset, len);
1154   else
1155     {
1156       enum target_object raw_object = object;
1157
1158       /* If this is a raw memory transfer, request the normal
1159          memory object from other layers.  */
1160       if (raw_object == TARGET_OBJECT_RAW_MEMORY)
1161         raw_object = TARGET_OBJECT_MEMORY;
1162
1163       retval = ops->to_xfer_partial (ops, raw_object, annex, readbuf,
1164                                      writebuf, offset, len);
1165     }
1166
1167   if (targetdebug)
1168     {
1169       const unsigned char *myaddr = NULL;
1170
1171       fprintf_unfiltered (gdb_stdlog,
1172                           "%s:target_xfer_partial (%d, %s, 0x%lx,  0x%lx,  0x%s, %s) = %s",
1173                           ops->to_shortname,
1174                           (int) object,
1175                           (annex ? annex : "(null)"),
1176                           (long) readbuf, (long) writebuf,
1177                           paddr_nz (offset), paddr_d (len), paddr_d (retval));
1178
1179       if (readbuf)
1180         myaddr = readbuf;
1181       if (writebuf)
1182         myaddr = writebuf;
1183       if (retval > 0 && myaddr != NULL)
1184         {
1185           int i;
1186
1187           fputs_unfiltered (", bytes =", gdb_stdlog);
1188           for (i = 0; i < retval; i++)
1189             {
1190               if ((((long) &(myaddr[i])) & 0xf) == 0)
1191                 {
1192                   if (targetdebug < 2 && i > 0)
1193                     {
1194                       fprintf_unfiltered (gdb_stdlog, " ...");
1195                       break;
1196                     }
1197                   fprintf_unfiltered (gdb_stdlog, "\n");
1198                 }
1199
1200               fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
1201             }
1202         }
1203
1204       fputc_unfiltered ('\n', gdb_stdlog);
1205     }
1206   return retval;
1207 }
1208
1209 /* Read LEN bytes of target memory at address MEMADDR, placing the results in
1210    GDB's memory at MYADDR.  Returns either 0 for success or an errno value
1211    if any error occurs.
1212
1213    If an error occurs, no guarantee is made about the contents of the data at
1214    MYADDR.  In particular, the caller should not depend upon partial reads
1215    filling the buffer with good data.  There is no way for the caller to know
1216    how much good data might have been transfered anyway.  Callers that can
1217    deal with partial reads should call target_read (which will retry until
1218    it makes no progress, and then return how much was transferred). */
1219
1220 int
1221 target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
1222 {
1223   if (target_read (&current_target, TARGET_OBJECT_MEMORY, NULL,
1224                    myaddr, memaddr, len) == len)
1225     return 0;
1226   else
1227     return EIO;
1228 }
1229
1230 int
1231 target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len)
1232 {
1233   if (target_write (&current_target, TARGET_OBJECT_MEMORY, NULL,
1234                     myaddr, memaddr, len) == len)
1235     return 0;
1236   else
1237     return EIO;
1238 }
1239
1240 /* Fetch the target's memory map.  */
1241
1242 VEC(mem_region_s) *
1243 target_memory_map (void)
1244 {
1245   VEC(mem_region_s) *result;
1246   struct mem_region *last_one, *this_one;
1247   int ix;
1248   struct target_ops *t;
1249
1250   if (targetdebug)
1251     fprintf_unfiltered (gdb_stdlog, "target_memory_map ()\n");
1252
1253   for (t = current_target.beneath; t != NULL; t = t->beneath)
1254     if (t->to_memory_map != NULL)
1255       break;
1256
1257   if (t == NULL)
1258     return NULL;
1259
1260   result = t->to_memory_map (t);
1261   if (result == NULL)
1262     return NULL;
1263
1264   qsort (VEC_address (mem_region_s, result),
1265          VEC_length (mem_region_s, result),
1266          sizeof (struct mem_region), mem_region_cmp);
1267
1268   /* Check that regions do not overlap.  Simultaneously assign
1269      a numbering for the "mem" commands to use to refer to
1270      each region.  */
1271   last_one = NULL;
1272   for (ix = 0; VEC_iterate (mem_region_s, result, ix, this_one); ix++)
1273     {
1274       this_one->number = ix;
1275
1276       if (last_one && last_one->hi > this_one->lo)
1277         {
1278           warning (_("Overlapping regions in memory map: ignoring"));
1279           VEC_free (mem_region_s, result);
1280           return NULL;
1281         }
1282       last_one = this_one;
1283     }
1284
1285   return result;
1286 }
1287
1288 void
1289 target_flash_erase (ULONGEST address, LONGEST length)
1290 {
1291   struct target_ops *t;
1292
1293   for (t = current_target.beneath; t != NULL; t = t->beneath)
1294     if (t->to_flash_erase != NULL)
1295         {
1296           if (targetdebug)
1297             fprintf_unfiltered (gdb_stdlog, "target_flash_erase (%s, %s)\n",
1298                                 paddr (address), phex (length, 0));
1299           t->to_flash_erase (t, address, length);
1300           return;
1301         }
1302
1303   tcomplain ();
1304 }
1305
1306 void
1307 target_flash_done (void)
1308 {
1309   struct target_ops *t;
1310
1311   for (t = current_target.beneath; t != NULL; t = t->beneath)
1312     if (t->to_flash_done != NULL)
1313         {
1314           if (targetdebug)
1315             fprintf_unfiltered (gdb_stdlog, "target_flash_done\n");
1316           t->to_flash_done (t);
1317           return;
1318         }
1319
1320   tcomplain ();
1321 }
1322
1323 #ifndef target_stopped_data_address_p
1324 int
1325 target_stopped_data_address_p (struct target_ops *target)
1326 {
1327   if (target->to_stopped_data_address
1328       == (int (*) (struct target_ops *, CORE_ADDR *)) return_zero)
1329     return 0;
1330   if (target->to_stopped_data_address == debug_to_stopped_data_address
1331       && (debug_target.to_stopped_data_address
1332           == (int (*) (struct target_ops *, CORE_ADDR *)) return_zero))
1333     return 0;
1334   return 1;
1335 }
1336 #endif
1337
1338 static void
1339 show_trust_readonly (struct ui_file *file, int from_tty,
1340                      struct cmd_list_element *c, const char *value)
1341 {
1342   fprintf_filtered (file, _("\
1343 Mode for reading from readonly sections is %s.\n"),
1344                     value);
1345 }
1346
1347 /* More generic transfers.  */
1348
1349 static LONGEST
1350 default_xfer_partial (struct target_ops *ops, enum target_object object,
1351                       const char *annex, gdb_byte *readbuf,
1352                       const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
1353 {
1354   if (object == TARGET_OBJECT_MEMORY
1355       && ops->deprecated_xfer_memory != NULL)
1356     /* If available, fall back to the target's
1357        "deprecated_xfer_memory" method.  */
1358     {
1359       int xfered = -1;
1360       errno = 0;
1361       if (writebuf != NULL)
1362         {
1363           void *buffer = xmalloc (len);
1364           struct cleanup *cleanup = make_cleanup (xfree, buffer);
1365           memcpy (buffer, writebuf, len);
1366           xfered = ops->deprecated_xfer_memory (offset, buffer, len,
1367                                                 1/*write*/, NULL, ops);
1368           do_cleanups (cleanup);
1369         }
1370       if (readbuf != NULL)
1371         xfered = ops->deprecated_xfer_memory (offset, readbuf, len, 
1372                                               0/*read*/, NULL, ops);
1373       if (xfered > 0)
1374         return xfered;
1375       else if (xfered == 0 && errno == 0)
1376         /* "deprecated_xfer_memory" uses 0, cross checked against
1377            ERRNO as one indication of an error.  */
1378         return 0;
1379       else
1380         return -1;
1381     }
1382   else if (ops->beneath != NULL)
1383     return ops->beneath->to_xfer_partial (ops->beneath, object, annex,
1384                                           readbuf, writebuf, offset, len);
1385   else
1386     return -1;
1387 }
1388
1389 /* The xfer_partial handler for the topmost target.  Unlike the default,
1390    it does not need to handle memory specially; it just passes all
1391    requests down the stack.  */
1392
1393 static LONGEST
1394 current_xfer_partial (struct target_ops *ops, enum target_object object,
1395                       const char *annex, gdb_byte *readbuf,
1396                       const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
1397 {
1398   if (ops->beneath != NULL)
1399     return ops->beneath->to_xfer_partial (ops->beneath, object, annex,
1400                                           readbuf, writebuf, offset, len);
1401   else
1402     return -1;
1403 }
1404
1405 /* Target vector read/write partial wrapper functions.
1406
1407    NOTE: cagney/2003-10-21: I wonder if having "to_xfer_partial
1408    (inbuf, outbuf)", instead of separate read/write methods, make life
1409    easier.  */
1410
1411 static LONGEST
1412 target_read_partial (struct target_ops *ops,
1413                      enum target_object object,
1414                      const char *annex, gdb_byte *buf,
1415                      ULONGEST offset, LONGEST len)
1416 {
1417   return target_xfer_partial (ops, object, annex, buf, NULL, offset, len);
1418 }
1419
1420 static LONGEST
1421 target_write_partial (struct target_ops *ops,
1422                       enum target_object object,
1423                       const char *annex, const gdb_byte *buf,
1424                       ULONGEST offset, LONGEST len)
1425 {
1426   return target_xfer_partial (ops, object, annex, NULL, buf, offset, len);
1427 }
1428
1429 /* Wrappers to perform the full transfer.  */
1430 LONGEST
1431 target_read (struct target_ops *ops,
1432              enum target_object object,
1433              const char *annex, gdb_byte *buf,
1434              ULONGEST offset, LONGEST len)
1435 {
1436   LONGEST xfered = 0;
1437   while (xfered < len)
1438     {
1439       LONGEST xfer = target_read_partial (ops, object, annex,
1440                                           (gdb_byte *) buf + xfered,
1441                                           offset + xfered, len - xfered);
1442       /* Call an observer, notifying them of the xfer progress?  */
1443       if (xfer == 0)
1444         return xfered;
1445       if (xfer < 0)
1446         return -1;
1447       xfered += xfer;
1448       QUIT;
1449     }
1450   return len;
1451 }
1452
1453 /* An alternative to target_write with progress callbacks.  */
1454
1455 LONGEST
1456 target_write_with_progress (struct target_ops *ops,
1457                             enum target_object object,
1458                             const char *annex, const gdb_byte *buf,
1459                             ULONGEST offset, LONGEST len,
1460                             void (*progress) (ULONGEST, void *), void *baton)
1461 {
1462   LONGEST xfered = 0;
1463
1464   /* Give the progress callback a chance to set up.  */
1465   if (progress)
1466     (*progress) (0, baton);
1467
1468   while (xfered < len)
1469     {
1470       LONGEST xfer = target_write_partial (ops, object, annex,
1471                                            (gdb_byte *) buf + xfered,
1472                                            offset + xfered, len - xfered);
1473
1474       if (xfer == 0)
1475         return xfered;
1476       if (xfer < 0)
1477         return -1;
1478
1479       if (progress)
1480         (*progress) (xfer, baton);
1481
1482       xfered += xfer;
1483       QUIT;
1484     }
1485   return len;
1486 }
1487
1488 LONGEST
1489 target_write (struct target_ops *ops,
1490               enum target_object object,
1491               const char *annex, const gdb_byte *buf,
1492               ULONGEST offset, LONGEST len)
1493 {
1494   return target_write_with_progress (ops, object, annex, buf, offset, len,
1495                                      NULL, NULL);
1496 }
1497
1498 /* Read OBJECT/ANNEX using OPS.  Store the result in *BUF_P and return
1499    the size of the transferred data.  PADDING additional bytes are
1500    available in *BUF_P.  This is a helper function for
1501    target_read_alloc; see the declaration of that function for more
1502    information.  */
1503
1504 static LONGEST
1505 target_read_alloc_1 (struct target_ops *ops, enum target_object object,
1506                      const char *annex, gdb_byte **buf_p, int padding)
1507 {
1508   size_t buf_alloc, buf_pos;
1509   gdb_byte *buf;
1510   LONGEST n;
1511
1512   /* This function does not have a length parameter; it reads the
1513      entire OBJECT).  Also, it doesn't support objects fetched partly
1514      from one target and partly from another (in a different stratum,
1515      e.g. a core file and an executable).  Both reasons make it
1516      unsuitable for reading memory.  */
1517   gdb_assert (object != TARGET_OBJECT_MEMORY);
1518
1519   /* Start by reading up to 4K at a time.  The target will throttle
1520      this number down if necessary.  */
1521   buf_alloc = 4096;
1522   buf = xmalloc (buf_alloc);
1523   buf_pos = 0;
1524   while (1)
1525     {
1526       n = target_read_partial (ops, object, annex, &buf[buf_pos],
1527                                buf_pos, buf_alloc - buf_pos - padding);
1528       if (n < 0)
1529         {
1530           /* An error occurred.  */
1531           xfree (buf);
1532           return -1;
1533         }
1534       else if (n == 0)
1535         {
1536           /* Read all there was.  */
1537           if (buf_pos == 0)
1538             xfree (buf);
1539           else
1540             *buf_p = buf;
1541           return buf_pos;
1542         }
1543
1544       buf_pos += n;
1545
1546       /* If the buffer is filling up, expand it.  */
1547       if (buf_alloc < buf_pos * 2)
1548         {
1549           buf_alloc *= 2;
1550           buf = xrealloc (buf, buf_alloc);
1551         }
1552
1553       QUIT;
1554     }
1555 }
1556
1557 /* Read OBJECT/ANNEX using OPS.  Store the result in *BUF_P and return
1558    the size of the transferred data.  See the declaration in "target.h"
1559    function for more information about the return value.  */
1560
1561 LONGEST
1562 target_read_alloc (struct target_ops *ops, enum target_object object,
1563                    const char *annex, gdb_byte **buf_p)
1564 {
1565   return target_read_alloc_1 (ops, object, annex, buf_p, 0);
1566 }
1567
1568 /* Read OBJECT/ANNEX using OPS.  The result is NUL-terminated and
1569    returned as a string, allocated using xmalloc.  If an error occurs
1570    or the transfer is unsupported, NULL is returned.  Empty objects
1571    are returned as allocated but empty strings.  A warning is issued
1572    if the result contains any embedded NUL bytes.  */
1573
1574 char *
1575 target_read_stralloc (struct target_ops *ops, enum target_object object,
1576                       const char *annex)
1577 {
1578   gdb_byte *buffer;
1579   LONGEST transferred;
1580
1581   transferred = target_read_alloc_1 (ops, object, annex, &buffer, 1);
1582
1583   if (transferred < 0)
1584     return NULL;
1585
1586   if (transferred == 0)
1587     return xstrdup ("");
1588
1589   buffer[transferred] = 0;
1590   if (strlen (buffer) < transferred)
1591     warning (_("target object %d, annex %s, "
1592                "contained unexpected null characters"),
1593              (int) object, annex ? annex : "(none)");
1594
1595   return (char *) buffer;
1596 }
1597
1598 /* Memory transfer methods.  */
1599
1600 void
1601 get_target_memory (struct target_ops *ops, CORE_ADDR addr, gdb_byte *buf,
1602                    LONGEST len)
1603 {
1604   if (target_read (ops, TARGET_OBJECT_MEMORY, NULL, buf, addr, len)
1605       != len)
1606     memory_error (EIO, addr);
1607 }
1608
1609 ULONGEST
1610 get_target_memory_unsigned (struct target_ops *ops,
1611                             CORE_ADDR addr, int len)
1612 {
1613   gdb_byte buf[sizeof (ULONGEST)];
1614
1615   gdb_assert (len <= sizeof (buf));
1616   get_target_memory (ops, addr, buf, len);
1617   return extract_unsigned_integer (buf, len);
1618 }
1619
1620 static void
1621 target_info (char *args, int from_tty)
1622 {
1623   struct target_ops *t;
1624   int has_all_mem = 0;
1625
1626   if (symfile_objfile != NULL)
1627     printf_unfiltered (_("Symbols from \"%s\".\n"), symfile_objfile->name);
1628
1629   for (t = target_stack; t != NULL; t = t->beneath)
1630     {
1631       if (!t->to_has_memory)
1632         continue;
1633
1634       if ((int) (t->to_stratum) <= (int) dummy_stratum)
1635         continue;
1636       if (has_all_mem)
1637         printf_unfiltered (_("\tWhile running this, GDB does not access memory from...\n"));
1638       printf_unfiltered ("%s:\n", t->to_longname);
1639       (t->to_files_info) (t);
1640       has_all_mem = t->to_has_all_memory;
1641     }
1642 }
1643
1644 /* This function is called before any new inferior is created, e.g.
1645    by running a program, attaching, or connecting to a target.
1646    It cleans up any state from previous invocations which might
1647    change between runs.  This is a subset of what target_preopen
1648    resets (things which might change between targets).  */
1649
1650 void
1651 target_pre_inferior (int from_tty)
1652 {
1653   invalidate_target_mem_regions ();
1654
1655   target_clear_description ();
1656 }
1657
1658 /* This is to be called by the open routine before it does
1659    anything.  */
1660
1661 void
1662 target_preopen (int from_tty)
1663 {
1664   dont_repeat ();
1665
1666   if (target_has_execution)
1667     {
1668       if (!from_tty
1669           || query (_("A program is being debugged already.  Kill it? ")))
1670         target_kill ();
1671       else
1672         error (_("Program not killed."));
1673     }
1674
1675   /* Calling target_kill may remove the target from the stack.  But if
1676      it doesn't (which seems like a win for UDI), remove it now.  */
1677
1678   if (target_has_execution)
1679     pop_target ();
1680
1681   target_pre_inferior (from_tty);
1682 }
1683
1684 /* Detach a target after doing deferred register stores.  */
1685
1686 void
1687 target_detach (char *args, int from_tty)
1688 {
1689   /* If we're in breakpoints-always-inserted mode, have to
1690      remove them before detaching.  */
1691   remove_breakpoints ();
1692
1693   (current_target.to_detach) (args, from_tty);
1694 }
1695
1696 void
1697 target_disconnect (char *args, int from_tty)
1698 {
1699   struct target_ops *t;
1700
1701   /* If we're in breakpoints-always-inserted mode, have to
1702      remove them before disconnecting.  */  
1703   remove_breakpoints ();
1704
1705   for (t = current_target.beneath; t != NULL; t = t->beneath)
1706     if (t->to_disconnect != NULL)
1707         {
1708           if (targetdebug)
1709             fprintf_unfiltered (gdb_stdlog, "target_disconnect (%s, %d)\n",
1710                                 args, from_tty);
1711           t->to_disconnect (t, args, from_tty);
1712           return;
1713         }
1714
1715   tcomplain ();
1716 }
1717
1718 /* Look through the list of possible targets for a target that can
1719    follow forks.  */
1720
1721 int
1722 target_follow_fork (int follow_child)
1723 {
1724   struct target_ops *t;
1725
1726   for (t = current_target.beneath; t != NULL; t = t->beneath)
1727     {
1728       if (t->to_follow_fork != NULL)
1729         {
1730           int retval = t->to_follow_fork (t, follow_child);
1731           if (targetdebug)
1732             fprintf_unfiltered (gdb_stdlog, "target_follow_fork (%d) = %d\n",
1733                                 follow_child, retval);
1734           return retval;
1735         }
1736     }
1737
1738   /* Some target returned a fork event, but did not know how to follow it.  */
1739   internal_error (__FILE__, __LINE__,
1740                   "could not find a target to follow fork");
1741 }
1742
1743 /* Look for a target which can describe architectural features, starting
1744    from TARGET.  If we find one, return its description.  */
1745
1746 const struct target_desc *
1747 target_read_description (struct target_ops *target)
1748 {
1749   struct target_ops *t;
1750
1751   for (t = target; t != NULL; t = t->beneath)
1752     if (t->to_read_description != NULL)
1753       {
1754         const struct target_desc *tdesc;
1755
1756         tdesc = t->to_read_description (t);
1757         if (tdesc)
1758           return tdesc;
1759       }
1760
1761   return NULL;
1762 }
1763
1764 /* The default implementation of to_search_memory.
1765    This implements a basic search of memory, reading target memory and
1766    performing the search here (as opposed to performing the search in on the
1767    target side with, for example, gdbserver).  */
1768
1769 int
1770 simple_search_memory (struct target_ops *ops,
1771                       CORE_ADDR start_addr, ULONGEST search_space_len,
1772                       const gdb_byte *pattern, ULONGEST pattern_len,
1773                       CORE_ADDR *found_addrp)
1774 {
1775   /* NOTE: also defined in find.c testcase.  */
1776 #define SEARCH_CHUNK_SIZE 16000
1777   const unsigned chunk_size = SEARCH_CHUNK_SIZE;
1778   /* Buffer to hold memory contents for searching.  */
1779   gdb_byte *search_buf;
1780   unsigned search_buf_size;
1781   struct cleanup *old_cleanups;
1782
1783   search_buf_size = chunk_size + pattern_len - 1;
1784
1785   /* No point in trying to allocate a buffer larger than the search space.  */
1786   if (search_space_len < search_buf_size)
1787     search_buf_size = search_space_len;
1788
1789   search_buf = malloc (search_buf_size);
1790   if (search_buf == NULL)
1791     error (_("unable to allocate memory to perform the search"));
1792   old_cleanups = make_cleanup (free_current_contents, &search_buf);
1793
1794   /* Prime the search buffer.  */
1795
1796   if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
1797                    search_buf, start_addr, search_buf_size) != search_buf_size)
1798     {
1799       warning (_("unable to access target memory at %s, halting search"),
1800                hex_string (start_addr));
1801       do_cleanups (old_cleanups);
1802       return -1;
1803     }
1804
1805   /* Perform the search.
1806
1807      The loop is kept simple by allocating [N + pattern-length - 1] bytes.
1808      When we've scanned N bytes we copy the trailing bytes to the start and
1809      read in another N bytes.  */
1810
1811   while (search_space_len >= pattern_len)
1812     {
1813       gdb_byte *found_ptr;
1814       unsigned nr_search_bytes = min (search_space_len, search_buf_size);
1815
1816       found_ptr = memmem (search_buf, nr_search_bytes,
1817                           pattern, pattern_len);
1818
1819       if (found_ptr != NULL)
1820         {
1821           CORE_ADDR found_addr = start_addr + (found_ptr - search_buf);
1822           *found_addrp = found_addr;
1823           do_cleanups (old_cleanups);
1824           return 1;
1825         }
1826
1827       /* Not found in this chunk, skip to next chunk.  */
1828
1829       /* Don't let search_space_len wrap here, it's unsigned.  */
1830       if (search_space_len >= chunk_size)
1831         search_space_len -= chunk_size;
1832       else
1833         search_space_len = 0;
1834
1835       if (search_space_len >= pattern_len)
1836         {
1837           unsigned keep_len = search_buf_size - chunk_size;
1838           CORE_ADDR read_addr = start_addr + keep_len;
1839           int nr_to_read;
1840
1841           /* Copy the trailing part of the previous iteration to the front
1842              of the buffer for the next iteration.  */
1843           gdb_assert (keep_len == pattern_len - 1);
1844           memcpy (search_buf, search_buf + chunk_size, keep_len);
1845
1846           nr_to_read = min (search_space_len - keep_len, chunk_size);
1847
1848           if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
1849                            search_buf + keep_len, read_addr,
1850                            nr_to_read) != nr_to_read)
1851             {
1852               warning (_("unable to access target memory at %s, halting search"),
1853                        hex_string (read_addr));
1854               do_cleanups (old_cleanups);
1855               return -1;
1856             }
1857
1858           start_addr += chunk_size;
1859         }
1860     }
1861
1862   /* Not found.  */
1863
1864   do_cleanups (old_cleanups);
1865   return 0;
1866 }
1867
1868 /* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the
1869    sequence of bytes in PATTERN with length PATTERN_LEN.
1870
1871    The result is 1 if found, 0 if not found, and -1 if there was an error
1872    requiring halting of the search (e.g. memory read error).
1873    If the pattern is found the address is recorded in FOUND_ADDRP.  */
1874
1875 int
1876 target_search_memory (CORE_ADDR start_addr, ULONGEST search_space_len,
1877                       const gdb_byte *pattern, ULONGEST pattern_len,
1878                       CORE_ADDR *found_addrp)
1879 {
1880   struct target_ops *t;
1881   int found;
1882
1883   /* We don't use INHERIT to set current_target.to_search_memory,
1884      so we have to scan the target stack and handle targetdebug
1885      ourselves.  */
1886
1887   if (targetdebug)
1888     fprintf_unfiltered (gdb_stdlog, "target_search_memory (%s, ...)\n",
1889                         hex_string (start_addr));
1890
1891   for (t = current_target.beneath; t != NULL; t = t->beneath)
1892     if (t->to_search_memory != NULL)
1893       break;
1894
1895   if (t != NULL)
1896     {
1897       found = t->to_search_memory (t, start_addr, search_space_len,
1898                                    pattern, pattern_len, found_addrp);
1899     }
1900   else
1901     {
1902       /* If a special version of to_search_memory isn't available, use the
1903          simple version.  */
1904       found = simple_search_memory (&current_target,
1905                                     start_addr, search_space_len,
1906                                     pattern, pattern_len, found_addrp);
1907     }
1908
1909   if (targetdebug)
1910     fprintf_unfiltered (gdb_stdlog, "  = %d\n", found);
1911
1912   return found;
1913 }
1914
1915 /* Look through the currently pushed targets.  If none of them will
1916    be able to restart the currently running process, issue an error
1917    message.  */
1918
1919 void
1920 target_require_runnable (void)
1921 {
1922   struct target_ops *t;
1923
1924   for (t = target_stack; t != NULL; t = t->beneath)
1925     {
1926       /* If this target knows how to create a new program, then
1927          assume we will still be able to after killing the current
1928          one.  Either killing and mourning will not pop T, or else
1929          find_default_run_target will find it again.  */
1930       if (t->to_create_inferior != NULL)
1931         return;
1932
1933       /* Do not worry about thread_stratum targets that can not
1934          create inferiors.  Assume they will be pushed again if
1935          necessary, and continue to the process_stratum.  */
1936       if (t->to_stratum == thread_stratum)
1937         continue;
1938
1939       error (_("\
1940 The \"%s\" target does not support \"run\".  Try \"help target\" or \"continue\"."),
1941              t->to_shortname);
1942     }
1943
1944   /* This function is only called if the target is running.  In that
1945      case there should have been a process_stratum target and it
1946      should either know how to create inferiors, or not... */
1947   internal_error (__FILE__, __LINE__, "No targets found");
1948 }
1949
1950 /* Look through the list of possible targets for a target that can
1951    execute a run or attach command without any other data.  This is
1952    used to locate the default process stratum.
1953
1954    If DO_MESG is not NULL, the result is always valid (error() is
1955    called for errors); else, return NULL on error.  */
1956
1957 static struct target_ops *
1958 find_default_run_target (char *do_mesg)
1959 {
1960   struct target_ops **t;
1961   struct target_ops *runable = NULL;
1962   int count;
1963
1964   count = 0;
1965
1966   for (t = target_structs; t < target_structs + target_struct_size;
1967        ++t)
1968     {
1969       if ((*t)->to_can_run && target_can_run (*t))
1970         {
1971           runable = *t;
1972           ++count;
1973         }
1974     }
1975
1976   if (count != 1)
1977     {
1978       if (do_mesg)
1979         error (_("Don't know how to %s.  Try \"help target\"."), do_mesg);
1980       else
1981         return NULL;
1982     }
1983
1984   return runable;
1985 }
1986
1987 void
1988 find_default_attach (char *args, int from_tty)
1989 {
1990   struct target_ops *t;
1991
1992   t = find_default_run_target ("attach");
1993   (t->to_attach) (args, from_tty);
1994   return;
1995 }
1996
1997 void
1998 find_default_create_inferior (char *exec_file, char *allargs, char **env,
1999                               int from_tty)
2000 {
2001   struct target_ops *t;
2002
2003   t = find_default_run_target ("run");
2004   (t->to_create_inferior) (exec_file, allargs, env, from_tty);
2005   return;
2006 }
2007
2008 int
2009 find_default_can_async_p (void)
2010 {
2011   struct target_ops *t;
2012
2013   /* This may be called before the target is pushed on the stack;
2014      look for the default process stratum.  If there's none, gdb isn't
2015      configured with a native debugger, and target remote isn't
2016      connected yet.  */
2017   t = find_default_run_target (NULL);
2018   if (t && t->to_can_async_p)
2019     return (t->to_can_async_p) ();
2020   return 0;
2021 }
2022
2023 int
2024 find_default_is_async_p (void)
2025 {
2026   struct target_ops *t;
2027
2028   /* This may be called before the target is pushed on the stack;
2029      look for the default process stratum.  If there's none, gdb isn't
2030      configured with a native debugger, and target remote isn't
2031      connected yet.  */
2032   t = find_default_run_target (NULL);
2033   if (t && t->to_is_async_p)
2034     return (t->to_is_async_p) ();
2035   return 0;
2036 }
2037
2038 static int
2039 default_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
2040 {
2041   return (len <= TYPE_LENGTH (builtin_type_void_data_ptr));
2042 }
2043
2044 static int
2045 default_watchpoint_addr_within_range (struct target_ops *target,
2046                                       CORE_ADDR addr,
2047                                       CORE_ADDR start, int length)
2048 {
2049   return addr >= start && addr < start + length;
2050 }
2051
2052 static int
2053 return_zero (void)
2054 {
2055   return 0;
2056 }
2057
2058 static int
2059 return_one (void)
2060 {
2061   return 1;
2062 }
2063
2064 static int
2065 return_minus_one (void)
2066 {
2067   return -1;
2068 }
2069
2070 /*
2071  * Resize the to_sections pointer.  Also make sure that anyone that
2072  * was holding on to an old value of it gets updated.
2073  * Returns the old size.
2074  */
2075
2076 int
2077 target_resize_to_sections (struct target_ops *target, int num_added)
2078 {
2079   struct target_ops **t;
2080   struct section_table *old_value;
2081   int old_count;
2082
2083   old_value = target->to_sections;
2084
2085   if (target->to_sections)
2086     {
2087       old_count = target->to_sections_end - target->to_sections;
2088       target->to_sections = (struct section_table *)
2089         xrealloc ((char *) target->to_sections,
2090                   (sizeof (struct section_table)) * (num_added + old_count));
2091     }
2092   else
2093     {
2094       old_count = 0;
2095       target->to_sections = (struct section_table *)
2096         xmalloc ((sizeof (struct section_table)) * num_added);
2097     }
2098   target->to_sections_end = target->to_sections + (num_added + old_count);
2099
2100   /* Check to see if anyone else was pointing to this structure.
2101      If old_value was null, then no one was. */
2102
2103   if (old_value)
2104     {
2105       for (t = target_structs; t < target_structs + target_struct_size;
2106            ++t)
2107         {
2108           if ((*t)->to_sections == old_value)
2109             {
2110               (*t)->to_sections = target->to_sections;
2111               (*t)->to_sections_end = target->to_sections_end;
2112             }
2113         }
2114       /* There is a flattened view of the target stack in current_target,
2115          so its to_sections pointer might also need updating. */
2116       if (current_target.to_sections == old_value)
2117         {
2118           current_target.to_sections = target->to_sections;
2119           current_target.to_sections_end = target->to_sections_end;
2120         }
2121     }
2122
2123   return old_count;
2124
2125 }
2126
2127 /* Remove all target sections taken from ABFD.
2128
2129    Scan the current target stack for targets whose section tables
2130    refer to sections from BFD, and remove those sections.  We use this
2131    when we notice that the inferior has unloaded a shared object, for
2132    example.  */
2133 void
2134 remove_target_sections (bfd *abfd)
2135 {
2136   struct target_ops **t;
2137
2138   for (t = target_structs; t < target_structs + target_struct_size; t++)
2139     {
2140       struct section_table *src, *dest;
2141
2142       dest = (*t)->to_sections;
2143       for (src = (*t)->to_sections; src < (*t)->to_sections_end; src++)
2144         if (src->bfd != abfd)
2145           {
2146             /* Keep this section.  */
2147             if (dest < src) *dest = *src;
2148             dest++;
2149           }
2150
2151       /* If we've dropped any sections, resize the section table.  */
2152       if (dest < src)
2153         target_resize_to_sections (*t, dest - src);
2154     }
2155 }
2156
2157
2158
2159
2160 /* Find a single runnable target in the stack and return it.  If for
2161    some reason there is more than one, return NULL.  */
2162
2163 struct target_ops *
2164 find_run_target (void)
2165 {
2166   struct target_ops **t;
2167   struct target_ops *runable = NULL;
2168   int count;
2169
2170   count = 0;
2171
2172   for (t = target_structs; t < target_structs + target_struct_size; ++t)
2173     {
2174       if ((*t)->to_can_run && target_can_run (*t))
2175         {
2176           runable = *t;
2177           ++count;
2178         }
2179     }
2180
2181   return (count == 1 ? runable : NULL);
2182 }
2183
2184 /* Find a single core_stratum target in the list of targets and return it.
2185    If for some reason there is more than one, return NULL.  */
2186
2187 struct target_ops *
2188 find_core_target (void)
2189 {
2190   struct target_ops **t;
2191   struct target_ops *runable = NULL;
2192   int count;
2193
2194   count = 0;
2195
2196   for (t = target_structs; t < target_structs + target_struct_size;
2197        ++t)
2198     {
2199       if ((*t)->to_stratum == core_stratum)
2200         {
2201           runable = *t;
2202           ++count;
2203         }
2204     }
2205
2206   return (count == 1 ? runable : NULL);
2207 }
2208
2209 /*
2210  * Find the next target down the stack from the specified target.
2211  */
2212
2213 struct target_ops *
2214 find_target_beneath (struct target_ops *t)
2215 {
2216   return t->beneath;
2217 }
2218
2219 \f
2220 /* The inferior process has died.  Long live the inferior!  */
2221
2222 void
2223 generic_mourn_inferior (void)
2224 {
2225   extern int show_breakpoint_hit_counts;
2226
2227   inferior_ptid = null_ptid;
2228   attach_flag = 0;
2229   breakpoint_init_inferior (inf_exited);
2230   registers_changed ();
2231
2232   reopen_exec_file ();
2233   reinit_frame_cache ();
2234
2235   /* It is confusing to the user for ignore counts to stick around
2236      from previous runs of the inferior.  So clear them.  */
2237   /* However, it is more confusing for the ignore counts to disappear when
2238      using hit counts.  So don't clear them if we're counting hits.  */
2239   if (!show_breakpoint_hit_counts)
2240     breakpoint_clear_ignore_counts ();
2241
2242   if (deprecated_detach_hook)
2243     deprecated_detach_hook ();
2244 }
2245 \f
2246 /* Helper function for child_wait and the derivatives of child_wait.
2247    HOSTSTATUS is the waitstatus from wait() or the equivalent; store our
2248    translation of that in OURSTATUS.  */
2249 void
2250 store_waitstatus (struct target_waitstatus *ourstatus, int hoststatus)
2251 {
2252   if (WIFEXITED (hoststatus))
2253     {
2254       ourstatus->kind = TARGET_WAITKIND_EXITED;
2255       ourstatus->value.integer = WEXITSTATUS (hoststatus);
2256     }
2257   else if (!WIFSTOPPED (hoststatus))
2258     {
2259       ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
2260       ourstatus->value.sig = target_signal_from_host (WTERMSIG (hoststatus));
2261     }
2262   else
2263     {
2264       ourstatus->kind = TARGET_WAITKIND_STOPPED;
2265       ourstatus->value.sig = target_signal_from_host (WSTOPSIG (hoststatus));
2266     }
2267 }
2268 \f
2269 /* Returns zero to leave the inferior alone, one to interrupt it.  */
2270 int (*target_activity_function) (void);
2271 int target_activity_fd;
2272 \f
2273 /* Convert a normal process ID to a string.  Returns the string in a
2274    static buffer.  */
2275
2276 char *
2277 normal_pid_to_str (ptid_t ptid)
2278 {
2279   static char buf[32];
2280
2281   xsnprintf (buf, sizeof buf, "process %d", ptid_get_pid (ptid));
2282   return buf;
2283 }
2284
2285 /* Error-catcher for target_find_memory_regions */
2286 static int dummy_find_memory_regions (int (*ignore1) (), void *ignore2)
2287 {
2288   error (_("No target."));
2289   return 0;
2290 }
2291
2292 /* Error-catcher for target_make_corefile_notes */
2293 static char * dummy_make_corefile_notes (bfd *ignore1, int *ignore2)
2294 {
2295   error (_("No target."));
2296   return NULL;
2297 }
2298
2299 /* Set up the handful of non-empty slots needed by the dummy target
2300    vector.  */
2301
2302 static void
2303 init_dummy_target (void)
2304 {
2305   dummy_target.to_shortname = "None";
2306   dummy_target.to_longname = "None";
2307   dummy_target.to_doc = "";
2308   dummy_target.to_attach = find_default_attach;
2309   dummy_target.to_create_inferior = find_default_create_inferior;
2310   dummy_target.to_can_async_p = find_default_can_async_p;
2311   dummy_target.to_is_async_p = find_default_is_async_p;
2312   dummy_target.to_pid_to_str = normal_pid_to_str;
2313   dummy_target.to_stratum = dummy_stratum;
2314   dummy_target.to_find_memory_regions = dummy_find_memory_regions;
2315   dummy_target.to_make_corefile_notes = dummy_make_corefile_notes;
2316   dummy_target.to_xfer_partial = default_xfer_partial;
2317   dummy_target.to_magic = OPS_MAGIC;
2318 }
2319 \f
2320 static void
2321 debug_to_open (char *args, int from_tty)
2322 {
2323   debug_target.to_open (args, from_tty);
2324
2325   fprintf_unfiltered (gdb_stdlog, "target_open (%s, %d)\n", args, from_tty);
2326 }
2327
2328 static void
2329 debug_to_close (int quitting)
2330 {
2331   target_close (&debug_target, quitting);
2332   fprintf_unfiltered (gdb_stdlog, "target_close (%d)\n", quitting);
2333 }
2334
2335 void
2336 target_close (struct target_ops *targ, int quitting)
2337 {
2338   if (targ->to_xclose != NULL)
2339     targ->to_xclose (targ, quitting);
2340   else if (targ->to_close != NULL)
2341     targ->to_close (quitting);
2342 }
2343
2344 static void
2345 debug_to_attach (char *args, int from_tty)
2346 {
2347   debug_target.to_attach (args, from_tty);
2348
2349   fprintf_unfiltered (gdb_stdlog, "target_attach (%s, %d)\n", args, from_tty);
2350 }
2351
2352
2353 static void
2354 debug_to_post_attach (int pid)
2355 {
2356   debug_target.to_post_attach (pid);
2357
2358   fprintf_unfiltered (gdb_stdlog, "target_post_attach (%d)\n", pid);
2359 }
2360
2361 static void
2362 debug_to_detach (char *args, int from_tty)
2363 {
2364   debug_target.to_detach (args, from_tty);
2365
2366   fprintf_unfiltered (gdb_stdlog, "target_detach (%s, %d)\n", args, from_tty);
2367 }
2368
2369 static void
2370 debug_to_resume (ptid_t ptid, int step, enum target_signal siggnal)
2371 {
2372   debug_target.to_resume (ptid, step, siggnal);
2373
2374   fprintf_unfiltered (gdb_stdlog, "target_resume (%d, %s, %s)\n", PIDGET (ptid),
2375                       step ? "step" : "continue",
2376                       target_signal_to_name (siggnal));
2377 }
2378
2379 static ptid_t
2380 debug_to_wait (ptid_t ptid, struct target_waitstatus *status)
2381 {
2382   ptid_t retval;
2383
2384   retval = debug_target.to_wait (ptid, status);
2385
2386   fprintf_unfiltered (gdb_stdlog,
2387                       "target_wait (%d, status) = %d,   ", PIDGET (ptid),
2388                       PIDGET (retval));
2389   fprintf_unfiltered (gdb_stdlog, "status->kind = ");
2390   switch (status->kind)
2391     {
2392     case TARGET_WAITKIND_EXITED:
2393       fprintf_unfiltered (gdb_stdlog, "exited, status = %d\n",
2394                           status->value.integer);
2395       break;
2396     case TARGET_WAITKIND_STOPPED:
2397       fprintf_unfiltered (gdb_stdlog, "stopped, signal = %s\n",
2398                           target_signal_to_name (status->value.sig));
2399       break;
2400     case TARGET_WAITKIND_SIGNALLED:
2401       fprintf_unfiltered (gdb_stdlog, "signalled, signal = %s\n",
2402                           target_signal_to_name (status->value.sig));
2403       break;
2404     case TARGET_WAITKIND_LOADED:
2405       fprintf_unfiltered (gdb_stdlog, "loaded\n");
2406       break;
2407     case TARGET_WAITKIND_FORKED:
2408       fprintf_unfiltered (gdb_stdlog, "forked\n");
2409       break;
2410     case TARGET_WAITKIND_VFORKED:
2411       fprintf_unfiltered (gdb_stdlog, "vforked\n");
2412       break;
2413     case TARGET_WAITKIND_EXECD:
2414       fprintf_unfiltered (gdb_stdlog, "execd\n");
2415       break;
2416     case TARGET_WAITKIND_SPURIOUS:
2417       fprintf_unfiltered (gdb_stdlog, "spurious\n");
2418       break;
2419     default:
2420       fprintf_unfiltered (gdb_stdlog, "unknown???\n");
2421       break;
2422     }
2423
2424   return retval;
2425 }
2426
2427 static void
2428 debug_print_register (const char * func,
2429                       struct regcache *regcache, int regno)
2430 {
2431   struct gdbarch *gdbarch = get_regcache_arch (regcache);
2432   fprintf_unfiltered (gdb_stdlog, "%s ", func);
2433   if (regno >= 0 && regno < gdbarch_num_regs (gdbarch)
2434                             + gdbarch_num_pseudo_regs (gdbarch)
2435       && gdbarch_register_name (gdbarch, regno) != NULL
2436       && gdbarch_register_name (gdbarch, regno)[0] != '\0')
2437     fprintf_unfiltered (gdb_stdlog, "(%s)",
2438                         gdbarch_register_name (gdbarch, regno));
2439   else
2440     fprintf_unfiltered (gdb_stdlog, "(%d)", regno);
2441   if (regno >= 0)
2442     {
2443       int i, size = register_size (gdbarch, regno);
2444       unsigned char buf[MAX_REGISTER_SIZE];
2445       regcache_cooked_read (regcache, regno, buf);
2446       fprintf_unfiltered (gdb_stdlog, " = ");
2447       for (i = 0; i < size; i++)
2448         {
2449           fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
2450         }
2451       if (size <= sizeof (LONGEST))
2452         {
2453           ULONGEST val = extract_unsigned_integer (buf, size);
2454           fprintf_unfiltered (gdb_stdlog, " 0x%s %s",
2455                               paddr_nz (val), paddr_d (val));
2456         }
2457     }
2458   fprintf_unfiltered (gdb_stdlog, "\n");
2459 }
2460
2461 static void
2462 debug_to_fetch_registers (struct regcache *regcache, int regno)
2463 {
2464   debug_target.to_fetch_registers (regcache, regno);
2465   debug_print_register ("target_fetch_registers", regcache, regno);
2466 }
2467
2468 static void
2469 debug_to_store_registers (struct regcache *regcache, int regno)
2470 {
2471   debug_target.to_store_registers (regcache, regno);
2472   debug_print_register ("target_store_registers", regcache, regno);
2473   fprintf_unfiltered (gdb_stdlog, "\n");
2474 }
2475
2476 static void
2477 debug_to_prepare_to_store (struct regcache *regcache)
2478 {
2479   debug_target.to_prepare_to_store (regcache);
2480
2481   fprintf_unfiltered (gdb_stdlog, "target_prepare_to_store ()\n");
2482 }
2483
2484 static int
2485 deprecated_debug_xfer_memory (CORE_ADDR memaddr, bfd_byte *myaddr, int len,
2486                               int write, struct mem_attrib *attrib,
2487                               struct target_ops *target)
2488 {
2489   int retval;
2490
2491   retval = debug_target.deprecated_xfer_memory (memaddr, myaddr, len, write,
2492                                                 attrib, target);
2493
2494   fprintf_unfiltered (gdb_stdlog,
2495                       "target_xfer_memory (0x%x, xxx, %d, %s, xxx) = %d",
2496                       (unsigned int) memaddr,   /* possable truncate long long */
2497                       len, write ? "write" : "read", retval);
2498
2499   if (retval > 0)
2500     {
2501       int i;
2502
2503       fputs_unfiltered (", bytes =", gdb_stdlog);
2504       for (i = 0; i < retval; i++)
2505         {
2506           if ((((long) &(myaddr[i])) & 0xf) == 0)
2507             {
2508               if (targetdebug < 2 && i > 0)
2509                 {
2510                   fprintf_unfiltered (gdb_stdlog, " ...");
2511                   break;
2512                 }
2513               fprintf_unfiltered (gdb_stdlog, "\n");
2514             }
2515
2516           fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
2517         }
2518     }
2519
2520   fputc_unfiltered ('\n', gdb_stdlog);
2521
2522   return retval;
2523 }
2524
2525 static void
2526 debug_to_files_info (struct target_ops *target)
2527 {
2528   debug_target.to_files_info (target);
2529
2530   fprintf_unfiltered (gdb_stdlog, "target_files_info (xxx)\n");
2531 }
2532
2533 static int
2534 debug_to_insert_breakpoint (struct bp_target_info *bp_tgt)
2535 {
2536   int retval;
2537
2538   retval = debug_target.to_insert_breakpoint (bp_tgt);
2539
2540   fprintf_unfiltered (gdb_stdlog,
2541                       "target_insert_breakpoint (0x%lx, xxx) = %ld\n",
2542                       (unsigned long) bp_tgt->placed_address,
2543                       (unsigned long) retval);
2544   return retval;
2545 }
2546
2547 static int
2548 debug_to_remove_breakpoint (struct bp_target_info *bp_tgt)
2549 {
2550   int retval;
2551
2552   retval = debug_target.to_remove_breakpoint (bp_tgt);
2553
2554   fprintf_unfiltered (gdb_stdlog,
2555                       "target_remove_breakpoint (0x%lx, xxx) = %ld\n",
2556                       (unsigned long) bp_tgt->placed_address,
2557                       (unsigned long) retval);
2558   return retval;
2559 }
2560
2561 static int
2562 debug_to_can_use_hw_breakpoint (int type, int cnt, int from_tty)
2563 {
2564   int retval;
2565
2566   retval = debug_target.to_can_use_hw_breakpoint (type, cnt, from_tty);
2567
2568   fprintf_unfiltered (gdb_stdlog,
2569                       "target_can_use_hw_breakpoint (%ld, %ld, %ld) = %ld\n",
2570                       (unsigned long) type,
2571                       (unsigned long) cnt,
2572                       (unsigned long) from_tty,
2573                       (unsigned long) retval);
2574   return retval;
2575 }
2576
2577 static int
2578 debug_to_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
2579 {
2580   CORE_ADDR retval;
2581
2582   retval = debug_target.to_region_ok_for_hw_watchpoint (addr, len);
2583
2584   fprintf_unfiltered (gdb_stdlog,
2585                       "TARGET_REGION_OK_FOR_HW_WATCHPOINT (%ld, %ld) = 0x%lx\n",
2586                       (unsigned long) addr,
2587                       (unsigned long) len,
2588                       (unsigned long) retval);
2589   return retval;
2590 }
2591
2592 static int
2593 debug_to_stopped_by_watchpoint (void)
2594 {
2595   int retval;
2596
2597   retval = debug_target.to_stopped_by_watchpoint ();
2598
2599   fprintf_unfiltered (gdb_stdlog,
2600                       "STOPPED_BY_WATCHPOINT () = %ld\n",
2601                       (unsigned long) retval);
2602   return retval;
2603 }
2604
2605 static int
2606 debug_to_stopped_data_address (struct target_ops *target, CORE_ADDR *addr)
2607 {
2608   int retval;
2609
2610   retval = debug_target.to_stopped_data_address (target, addr);
2611
2612   fprintf_unfiltered (gdb_stdlog,
2613                       "target_stopped_data_address ([0x%lx]) = %ld\n",
2614                       (unsigned long)*addr,
2615                       (unsigned long)retval);
2616   return retval;
2617 }
2618
2619 static int
2620 debug_to_watchpoint_addr_within_range (struct target_ops *target,
2621                                        CORE_ADDR addr,
2622                                        CORE_ADDR start, int length)
2623 {
2624   int retval;
2625
2626   retval = debug_target.to_watchpoint_addr_within_range (target, addr,
2627                                                          start, length);
2628
2629   fprintf_filtered (gdb_stdlog,
2630                     "target_watchpoint_addr_within_range (0x%lx, 0x%lx, %d) = %d\n",
2631                     (unsigned long) addr, (unsigned long) start, length,
2632                     retval);
2633   return retval;
2634 }
2635
2636 static int
2637 debug_to_insert_hw_breakpoint (struct bp_target_info *bp_tgt)
2638 {
2639   int retval;
2640
2641   retval = debug_target.to_insert_hw_breakpoint (bp_tgt);
2642
2643   fprintf_unfiltered (gdb_stdlog,
2644                       "target_insert_hw_breakpoint (0x%lx, xxx) = %ld\n",
2645                       (unsigned long) bp_tgt->placed_address,
2646                       (unsigned long) retval);
2647   return retval;
2648 }
2649
2650 static int
2651 debug_to_remove_hw_breakpoint (struct bp_target_info *bp_tgt)
2652 {
2653   int retval;
2654
2655   retval = debug_target.to_remove_hw_breakpoint (bp_tgt);
2656
2657   fprintf_unfiltered (gdb_stdlog,
2658                       "target_remove_hw_breakpoint (0x%lx, xxx) = %ld\n",
2659                       (unsigned long) bp_tgt->placed_address,
2660                       (unsigned long) retval);
2661   return retval;
2662 }
2663
2664 static int
2665 debug_to_insert_watchpoint (CORE_ADDR addr, int len, int type)
2666 {
2667   int retval;
2668
2669   retval = debug_target.to_insert_watchpoint (addr, len, type);
2670
2671   fprintf_unfiltered (gdb_stdlog,
2672                       "target_insert_watchpoint (0x%lx, %d, %d) = %ld\n",
2673                       (unsigned long) addr, len, type, (unsigned long) retval);
2674   return retval;
2675 }
2676
2677 static int
2678 debug_to_remove_watchpoint (CORE_ADDR addr, int len, int type)
2679 {
2680   int retval;
2681
2682   retval = debug_target.to_remove_watchpoint (addr, len, type);
2683
2684   fprintf_unfiltered (gdb_stdlog,
2685                       "target_remove_watchpoint (0x%lx, %d, %d) = %ld\n",
2686                       (unsigned long) addr, len, type, (unsigned long) retval);
2687   return retval;
2688 }
2689
2690 static void
2691 debug_to_terminal_init (void)
2692 {
2693   debug_target.to_terminal_init ();
2694
2695   fprintf_unfiltered (gdb_stdlog, "target_terminal_init ()\n");
2696 }
2697
2698 static void
2699 debug_to_terminal_inferior (void)
2700 {
2701   debug_target.to_terminal_inferior ();
2702
2703   fprintf_unfiltered (gdb_stdlog, "target_terminal_inferior ()\n");
2704 }
2705
2706 static void
2707 debug_to_terminal_ours_for_output (void)
2708 {
2709   debug_target.to_terminal_ours_for_output ();
2710
2711   fprintf_unfiltered (gdb_stdlog, "target_terminal_ours_for_output ()\n");
2712 }
2713
2714 static void
2715 debug_to_terminal_ours (void)
2716 {
2717   debug_target.to_terminal_ours ();
2718
2719   fprintf_unfiltered (gdb_stdlog, "target_terminal_ours ()\n");
2720 }
2721
2722 static void
2723 debug_to_terminal_save_ours (void)
2724 {
2725   debug_target.to_terminal_save_ours ();
2726
2727   fprintf_unfiltered (gdb_stdlog, "target_terminal_save_ours ()\n");
2728 }
2729
2730 static void
2731 debug_to_terminal_info (char *arg, int from_tty)
2732 {
2733   debug_target.to_terminal_info (arg, from_tty);
2734
2735   fprintf_unfiltered (gdb_stdlog, "target_terminal_info (%s, %d)\n", arg,
2736                       from_tty);
2737 }
2738
2739 static void
2740 debug_to_kill (void)
2741 {
2742   debug_target.to_kill ();
2743
2744   fprintf_unfiltered (gdb_stdlog, "target_kill ()\n");
2745 }
2746
2747 static void
2748 debug_to_load (char *args, int from_tty)
2749 {
2750   debug_target.to_load (args, from_tty);
2751
2752   fprintf_unfiltered (gdb_stdlog, "target_load (%s, %d)\n", args, from_tty);
2753 }
2754
2755 static int
2756 debug_to_lookup_symbol (char *name, CORE_ADDR *addrp)
2757 {
2758   int retval;
2759
2760   retval = debug_target.to_lookup_symbol (name, addrp);
2761
2762   fprintf_unfiltered (gdb_stdlog, "target_lookup_symbol (%s, xxx)\n", name);
2763
2764   return retval;
2765 }
2766
2767 static void
2768 debug_to_create_inferior (char *exec_file, char *args, char **env,
2769                           int from_tty)
2770 {
2771   debug_target.to_create_inferior (exec_file, args, env, from_tty);
2772
2773   fprintf_unfiltered (gdb_stdlog, "target_create_inferior (%s, %s, xxx, %d)\n",
2774                       exec_file, args, from_tty);
2775 }
2776
2777 static void
2778 debug_to_post_startup_inferior (ptid_t ptid)
2779 {
2780   debug_target.to_post_startup_inferior (ptid);
2781
2782   fprintf_unfiltered (gdb_stdlog, "target_post_startup_inferior (%d)\n",
2783                       PIDGET (ptid));
2784 }
2785
2786 static void
2787 debug_to_acknowledge_created_inferior (int pid)
2788 {
2789   debug_target.to_acknowledge_created_inferior (pid);
2790
2791   fprintf_unfiltered (gdb_stdlog, "target_acknowledge_created_inferior (%d)\n",
2792                       pid);
2793 }
2794
2795 static void
2796 debug_to_insert_fork_catchpoint (int pid)
2797 {
2798   debug_target.to_insert_fork_catchpoint (pid);
2799
2800   fprintf_unfiltered (gdb_stdlog, "target_insert_fork_catchpoint (%d)\n",
2801                       pid);
2802 }
2803
2804 static int
2805 debug_to_remove_fork_catchpoint (int pid)
2806 {
2807   int retval;
2808
2809   retval = debug_target.to_remove_fork_catchpoint (pid);
2810
2811   fprintf_unfiltered (gdb_stdlog, "target_remove_fork_catchpoint (%d) = %d\n",
2812                       pid, retval);
2813
2814   return retval;
2815 }
2816
2817 static void
2818 debug_to_insert_vfork_catchpoint (int pid)
2819 {
2820   debug_target.to_insert_vfork_catchpoint (pid);
2821
2822   fprintf_unfiltered (gdb_stdlog, "target_insert_vfork_catchpoint (%d)\n",
2823                       pid);
2824 }
2825
2826 static int
2827 debug_to_remove_vfork_catchpoint (int pid)
2828 {
2829   int retval;
2830
2831   retval = debug_target.to_remove_vfork_catchpoint (pid);
2832
2833   fprintf_unfiltered (gdb_stdlog, "target_remove_vfork_catchpoint (%d) = %d\n",
2834                       pid, retval);
2835
2836   return retval;
2837 }
2838
2839 static void
2840 debug_to_insert_exec_catchpoint (int pid)
2841 {
2842   debug_target.to_insert_exec_catchpoint (pid);
2843
2844   fprintf_unfiltered (gdb_stdlog, "target_insert_exec_catchpoint (%d)\n",
2845                       pid);
2846 }
2847
2848 static int
2849 debug_to_remove_exec_catchpoint (int pid)
2850 {
2851   int retval;
2852
2853   retval = debug_target.to_remove_exec_catchpoint (pid);
2854
2855   fprintf_unfiltered (gdb_stdlog, "target_remove_exec_catchpoint (%d) = %d\n",
2856                       pid, retval);
2857
2858   return retval;
2859 }
2860
2861 static int
2862 debug_to_has_exited (int pid, int wait_status, int *exit_status)
2863 {
2864   int has_exited;
2865
2866   has_exited = debug_target.to_has_exited (pid, wait_status, exit_status);
2867
2868   fprintf_unfiltered (gdb_stdlog, "target_has_exited (%d, %d, %d) = %d\n",
2869                       pid, wait_status, *exit_status, has_exited);
2870
2871   return has_exited;
2872 }
2873
2874 static void
2875 debug_to_mourn_inferior (void)
2876 {
2877   debug_target.to_mourn_inferior ();
2878
2879   fprintf_unfiltered (gdb_stdlog, "target_mourn_inferior ()\n");
2880 }
2881
2882 static int
2883 debug_to_can_run (void)
2884 {
2885   int retval;
2886
2887   retval = debug_target.to_can_run ();
2888
2889   fprintf_unfiltered (gdb_stdlog, "target_can_run () = %d\n", retval);
2890
2891   return retval;
2892 }
2893
2894 static void
2895 debug_to_notice_signals (ptid_t ptid)
2896 {
2897   debug_target.to_notice_signals (ptid);
2898
2899   fprintf_unfiltered (gdb_stdlog, "target_notice_signals (%d)\n",
2900                       PIDGET (ptid));
2901 }
2902
2903 static int
2904 debug_to_thread_alive (ptid_t ptid)
2905 {
2906   int retval;
2907
2908   retval = debug_target.to_thread_alive (ptid);
2909
2910   fprintf_unfiltered (gdb_stdlog, "target_thread_alive (%d) = %d\n",
2911                       PIDGET (ptid), retval);
2912
2913   return retval;
2914 }
2915
2916 static void
2917 debug_to_find_new_threads (void)
2918 {
2919   debug_target.to_find_new_threads ();
2920
2921   fputs_unfiltered ("target_find_new_threads ()\n", gdb_stdlog);
2922 }
2923
2924 static void
2925 debug_to_stop (void)
2926 {
2927   debug_target.to_stop ();
2928
2929   fprintf_unfiltered (gdb_stdlog, "target_stop ()\n");
2930 }
2931
2932 static void
2933 debug_to_rcmd (char *command,
2934                struct ui_file *outbuf)
2935 {
2936   debug_target.to_rcmd (command, outbuf);
2937   fprintf_unfiltered (gdb_stdlog, "target_rcmd (%s, ...)\n", command);
2938 }
2939
2940 static char *
2941 debug_to_pid_to_exec_file (int pid)
2942 {
2943   char *exec_file;
2944
2945   exec_file = debug_target.to_pid_to_exec_file (pid);
2946
2947   fprintf_unfiltered (gdb_stdlog, "target_pid_to_exec_file (%d) = %s\n",
2948                       pid, exec_file);
2949
2950   return exec_file;
2951 }
2952
2953 static void
2954 setup_target_debug (void)
2955 {
2956   memcpy (&debug_target, &current_target, sizeof debug_target);
2957
2958   current_target.to_open = debug_to_open;
2959   current_target.to_close = debug_to_close;
2960   current_target.to_attach = debug_to_attach;
2961   current_target.to_post_attach = debug_to_post_attach;
2962   current_target.to_detach = debug_to_detach;
2963   current_target.to_resume = debug_to_resume;
2964   current_target.to_wait = debug_to_wait;
2965   current_target.to_fetch_registers = debug_to_fetch_registers;
2966   current_target.to_store_registers = debug_to_store_registers;
2967   current_target.to_prepare_to_store = debug_to_prepare_to_store;
2968   current_target.deprecated_xfer_memory = deprecated_debug_xfer_memory;
2969   current_target.to_files_info = debug_to_files_info;
2970   current_target.to_insert_breakpoint = debug_to_insert_breakpoint;
2971   current_target.to_remove_breakpoint = debug_to_remove_breakpoint;
2972   current_target.to_can_use_hw_breakpoint = debug_to_can_use_hw_breakpoint;
2973   current_target.to_insert_hw_breakpoint = debug_to_insert_hw_breakpoint;
2974   current_target.to_remove_hw_breakpoint = debug_to_remove_hw_breakpoint;
2975   current_target.to_insert_watchpoint = debug_to_insert_watchpoint;
2976   current_target.to_remove_watchpoint = debug_to_remove_watchpoint;
2977   current_target.to_stopped_by_watchpoint = debug_to_stopped_by_watchpoint;
2978   current_target.to_stopped_data_address = debug_to_stopped_data_address;
2979   current_target.to_watchpoint_addr_within_range = debug_to_watchpoint_addr_within_range;
2980   current_target.to_region_ok_for_hw_watchpoint = debug_to_region_ok_for_hw_watchpoint;
2981   current_target.to_terminal_init = debug_to_terminal_init;
2982   current_target.to_terminal_inferior = debug_to_terminal_inferior;
2983   current_target.to_terminal_ours_for_output = debug_to_terminal_ours_for_output;
2984   current_target.to_terminal_ours = debug_to_terminal_ours;
2985   current_target.to_terminal_save_ours = debug_to_terminal_save_ours;
2986   current_target.to_terminal_info = debug_to_terminal_info;
2987   current_target.to_kill = debug_to_kill;
2988   current_target.to_load = debug_to_load;
2989   current_target.to_lookup_symbol = debug_to_lookup_symbol;
2990   current_target.to_create_inferior = debug_to_create_inferior;
2991   current_target.to_post_startup_inferior = debug_to_post_startup_inferior;
2992   current_target.to_acknowledge_created_inferior = debug_to_acknowledge_created_inferior;
2993   current_target.to_insert_fork_catchpoint = debug_to_insert_fork_catchpoint;
2994   current_target.to_remove_fork_catchpoint = debug_to_remove_fork_catchpoint;
2995   current_target.to_insert_vfork_catchpoint = debug_to_insert_vfork_catchpoint;
2996   current_target.to_remove_vfork_catchpoint = debug_to_remove_vfork_catchpoint;
2997   current_target.to_insert_exec_catchpoint = debug_to_insert_exec_catchpoint;
2998   current_target.to_remove_exec_catchpoint = debug_to_remove_exec_catchpoint;
2999   current_target.to_has_exited = debug_to_has_exited;
3000   current_target.to_mourn_inferior = debug_to_mourn_inferior;
3001   current_target.to_can_run = debug_to_can_run;
3002   current_target.to_notice_signals = debug_to_notice_signals;
3003   current_target.to_thread_alive = debug_to_thread_alive;
3004   current_target.to_find_new_threads = debug_to_find_new_threads;
3005   current_target.to_stop = debug_to_stop;
3006   current_target.to_rcmd = debug_to_rcmd;
3007   current_target.to_pid_to_exec_file = debug_to_pid_to_exec_file;
3008 }
3009 \f
3010
3011 static char targ_desc[] =
3012 "Names of targets and files being debugged.\n\
3013 Shows the entire stack of targets currently in use (including the exec-file,\n\
3014 core-file, and process, if any), as well as the symbol file name.";
3015
3016 static void
3017 do_monitor_command (char *cmd,
3018                  int from_tty)
3019 {
3020   if ((current_target.to_rcmd
3021        == (void (*) (char *, struct ui_file *)) tcomplain)
3022       || (current_target.to_rcmd == debug_to_rcmd
3023           && (debug_target.to_rcmd
3024               == (void (*) (char *, struct ui_file *)) tcomplain)))
3025     error (_("\"monitor\" command not supported by this target."));
3026   target_rcmd (cmd, gdb_stdtarg);
3027 }
3028
3029 /* Print the name of each layers of our target stack.  */
3030
3031 static void
3032 maintenance_print_target_stack (char *cmd, int from_tty)
3033 {
3034   struct target_ops *t;
3035
3036   printf_filtered (_("The current target stack is:\n"));
3037
3038   for (t = target_stack; t != NULL; t = t->beneath)
3039     {
3040       printf_filtered ("  - %s (%s)\n", t->to_shortname, t->to_longname);
3041     }
3042 }
3043
3044 void
3045 initialize_targets (void)
3046 {
3047   init_dummy_target ();
3048   push_target (&dummy_target);
3049
3050   add_info ("target", target_info, targ_desc);
3051   add_info ("files", target_info, targ_desc);
3052
3053   add_setshow_zinteger_cmd ("target", class_maintenance, &targetdebug, _("\
3054 Set target debugging."), _("\
3055 Show target debugging."), _("\
3056 When non-zero, target debugging is enabled.  Higher numbers are more\n\
3057 verbose.  Changes do not take effect until the next \"run\" or \"target\"\n\
3058 command."),
3059                             NULL,
3060                             show_targetdebug,
3061                             &setdebuglist, &showdebuglist);
3062
3063   add_setshow_boolean_cmd ("trust-readonly-sections", class_support,
3064                            &trust_readonly, _("\
3065 Set mode for reading from readonly sections."), _("\
3066 Show mode for reading from readonly sections."), _("\
3067 When this mode is on, memory reads from readonly sections (such as .text)\n\
3068 will be read from the object file instead of from the target.  This will\n\
3069 result in significant performance improvement for remote targets."),
3070                            NULL,
3071                            show_trust_readonly,
3072                            &setlist, &showlist);
3073
3074   add_com ("monitor", class_obscure, do_monitor_command,
3075            _("Send a command to the remote monitor (remote targets only)."));
3076
3077   add_cmd ("target-stack", class_maintenance, maintenance_print_target_stack,
3078            _("Print the name of each layer of the internal target stack."),
3079            &maintenanceprintlist);
3080
3081   target_dcache = dcache_init ();
3082 }