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