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