* defs.h (struct continuation_arg): Fix typo in comment.
[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
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 (struct regcache *, int);
108
109 static void debug_to_store_registers (struct regcache *, int);
110
111 static void debug_to_prepare_to_store (struct regcache *);
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 current's 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_steppable_watchpoint, t);
415       INHERIT (to_have_continuable_watchpoint, t);
416       INHERIT (to_region_ok_for_hw_watchpoint, t);
417       INHERIT (to_terminal_init, t);
418       INHERIT (to_terminal_inferior, t);
419       INHERIT (to_terminal_ours_for_output, t);
420       INHERIT (to_terminal_ours, t);
421       INHERIT (to_terminal_save_ours, t);
422       INHERIT (to_terminal_info, t);
423       INHERIT (to_kill, t);
424       INHERIT (to_load, t);
425       INHERIT (to_lookup_symbol, t);
426       INHERIT (to_create_inferior, t);
427       INHERIT (to_post_startup_inferior, t);
428       INHERIT (to_acknowledge_created_inferior, t);
429       INHERIT (to_insert_fork_catchpoint, t);
430       INHERIT (to_remove_fork_catchpoint, t);
431       INHERIT (to_insert_vfork_catchpoint, t);
432       INHERIT (to_remove_vfork_catchpoint, t);
433       /* Do not inherit to_follow_fork.  */
434       INHERIT (to_insert_exec_catchpoint, t);
435       INHERIT (to_remove_exec_catchpoint, t);
436       INHERIT (to_reported_exec_events_per_exec_call, t);
437       INHERIT (to_has_exited, t);
438       INHERIT (to_mourn_inferior, t);
439       INHERIT (to_can_run, t);
440       INHERIT (to_notice_signals, t);
441       INHERIT (to_thread_alive, t);
442       INHERIT (to_find_new_threads, t);
443       INHERIT (to_pid_to_str, t);
444       INHERIT (to_extra_thread_info, t);
445       INHERIT (to_stop, t);
446       /* Do not inherit to_xfer_partial.  */
447       INHERIT (to_rcmd, t);
448       INHERIT (to_pid_to_exec_file, t);
449       INHERIT (to_log_command, 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       /* Do not inherit to_read_description.  */
467       INHERIT (to_magic, t);
468       /* Do not inherit to_memory_map.  */
469       /* Do not inherit to_flash_erase.  */
470       /* Do not inherit to_flash_done.  */
471     }
472 #undef INHERIT
473
474   /* Clean up a target struct so it no longer has any zero pointers in
475      it.  Some entries are defaulted to a method that print an error,
476      others are hard-wired to a standard recursive default.  */
477
478 #define de_fault(field, value) \
479   if (!current_target.field)               \
480     current_target.field = value
481
482   de_fault (to_open,
483             (void (*) (char *, int))
484             tcomplain);
485   de_fault (to_close,
486             (void (*) (int))
487             target_ignore);
488   de_fault (to_attach,
489             maybe_kill_then_attach);
490   de_fault (to_post_attach,
491             (void (*) (int))
492             target_ignore);
493   de_fault (to_detach,
494             (void (*) (char *, int))
495             target_ignore);
496   de_fault (to_resume,
497             (void (*) (ptid_t, int, enum target_signal))
498             noprocess);
499   de_fault (to_wait,
500             (ptid_t (*) (ptid_t, struct target_waitstatus *))
501             noprocess);
502   de_fault (to_fetch_registers,
503             (void (*) (struct regcache *, int))
504             target_ignore);
505   de_fault (to_store_registers,
506             (void (*) (struct regcache *, int))
507             noprocess);
508   de_fault (to_prepare_to_store,
509             (void (*) (struct regcache *))
510             noprocess);
511   de_fault (deprecated_xfer_memory,
512             (int (*) (CORE_ADDR, gdb_byte *, int, int, struct mem_attrib *, struct target_ops *))
513             nomemory);
514   de_fault (to_files_info,
515             (void (*) (struct target_ops *))
516             target_ignore);
517   de_fault (to_insert_breakpoint,
518             memory_insert_breakpoint);
519   de_fault (to_remove_breakpoint,
520             memory_remove_breakpoint);
521   de_fault (to_can_use_hw_breakpoint,
522             (int (*) (int, int, int))
523             return_zero);
524   de_fault (to_insert_hw_breakpoint,
525             (int (*) (struct bp_target_info *))
526             return_minus_one);
527   de_fault (to_remove_hw_breakpoint,
528             (int (*) (struct bp_target_info *))
529             return_minus_one);
530   de_fault (to_insert_watchpoint,
531             (int (*) (CORE_ADDR, int, int))
532             return_minus_one);
533   de_fault (to_remove_watchpoint,
534             (int (*) (CORE_ADDR, int, int))
535             return_minus_one);
536   de_fault (to_stopped_by_watchpoint,
537             (int (*) (void))
538             return_zero);
539   de_fault (to_stopped_data_address,
540             (int (*) (struct target_ops *, CORE_ADDR *))
541             return_zero);
542   de_fault (to_region_ok_for_hw_watchpoint,
543             default_region_ok_for_hw_watchpoint);
544   de_fault (to_terminal_init,
545             (void (*) (void))
546             target_ignore);
547   de_fault (to_terminal_inferior,
548             (void (*) (void))
549             target_ignore);
550   de_fault (to_terminal_ours_for_output,
551             (void (*) (void))
552             target_ignore);
553   de_fault (to_terminal_ours,
554             (void (*) (void))
555             target_ignore);
556   de_fault (to_terminal_save_ours,
557             (void (*) (void))
558             target_ignore);
559   de_fault (to_terminal_info,
560             default_terminal_info);
561   de_fault (to_kill,
562             (void (*) (void))
563             noprocess);
564   de_fault (to_load,
565             (void (*) (char *, int))
566             tcomplain);
567   de_fault (to_lookup_symbol,
568             (int (*) (char *, CORE_ADDR *))
569             nosymbol);
570   de_fault (to_create_inferior,
571             maybe_kill_then_create_inferior);
572   de_fault (to_post_startup_inferior,
573             (void (*) (ptid_t))
574             target_ignore);
575   de_fault (to_acknowledge_created_inferior,
576             (void (*) (int))
577             target_ignore);
578   de_fault (to_insert_fork_catchpoint,
579             (void (*) (int))
580             tcomplain);
581   de_fault (to_remove_fork_catchpoint,
582             (int (*) (int))
583             tcomplain);
584   de_fault (to_insert_vfork_catchpoint,
585             (void (*) (int))
586             tcomplain);
587   de_fault (to_remove_vfork_catchpoint,
588             (int (*) (int))
589             tcomplain);
590   de_fault (to_insert_exec_catchpoint,
591             (void (*) (int))
592             tcomplain);
593   de_fault (to_remove_exec_catchpoint,
594             (int (*) (int))
595             tcomplain);
596   de_fault (to_reported_exec_events_per_exec_call,
597             (int (*) (void))
598             return_one);
599   de_fault (to_has_exited,
600             (int (*) (int, int, int *))
601             return_zero);
602   de_fault (to_mourn_inferior,
603             (void (*) (void))
604             noprocess);
605   de_fault (to_can_run,
606             return_zero);
607   de_fault (to_notice_signals,
608             (void (*) (ptid_t))
609             target_ignore);
610   de_fault (to_thread_alive,
611             (int (*) (ptid_t))
612             return_zero);
613   de_fault (to_find_new_threads,
614             (void (*) (void))
615             target_ignore);
616   de_fault (to_extra_thread_info,
617             (char *(*) (struct thread_info *))
618             return_zero);
619   de_fault (to_stop,
620             (void (*) (void))
621             target_ignore);
622   current_target.to_xfer_partial = current_xfer_partial;
623   de_fault (to_rcmd,
624             (void (*) (char *, struct ui_file *))
625             tcomplain);
626   de_fault (to_pid_to_exec_file,
627             (char *(*) (int))
628             return_zero);
629   de_fault (to_can_async_p,
630             (int (*) (void))
631             return_zero);
632   de_fault (to_is_async_p,
633             (int (*) (void))
634             return_zero);
635   de_fault (to_async,
636             (void (*) (void (*) (enum inferior_event_type, void*), void*))
637             tcomplain);
638   current_target.to_read_description = NULL;
639 #undef de_fault
640
641   /* Finally, position the target-stack beneath the squashed
642      "current_target".  That way code looking for a non-inherited
643      target method can quickly and simply find it.  */
644   current_target.beneath = target_stack;
645
646   if (targetdebug)
647     setup_target_debug ();
648 }
649
650 /* Mark OPS as a running target.  This reverses the effect
651    of target_mark_exited.  */
652
653 void
654 target_mark_running (struct target_ops *ops)
655 {
656   struct target_ops *t;
657
658   for (t = target_stack; t != NULL; t = t->beneath)
659     if (t == ops)
660       break;
661   if (t == NULL)
662     internal_error (__FILE__, __LINE__,
663                     "Attempted to mark unpushed target \"%s\" as running",
664                     ops->to_shortname);
665
666   ops->to_has_execution = 1;
667   ops->to_has_all_memory = 1;
668   ops->to_has_memory = 1;
669   ops->to_has_stack = 1;
670   ops->to_has_registers = 1;
671
672   update_current_target ();
673 }
674
675 /* Mark OPS as a non-running target.  This reverses the effect
676    of target_mark_running.  */
677
678 void
679 target_mark_exited (struct target_ops *ops)
680 {
681   struct target_ops *t;
682
683   for (t = target_stack; t != NULL; t = t->beneath)
684     if (t == ops)
685       break;
686   if (t == NULL)
687     internal_error (__FILE__, __LINE__,
688                     "Attempted to mark unpushed target \"%s\" as running",
689                     ops->to_shortname);
690
691   ops->to_has_execution = 0;
692   ops->to_has_all_memory = 0;
693   ops->to_has_memory = 0;
694   ops->to_has_stack = 0;
695   ops->to_has_registers = 0;
696
697   update_current_target ();
698 }
699
700 /* Push a new target type into the stack of the existing target accessors,
701    possibly superseding some of the existing accessors.
702
703    Result is zero if the pushed target ended up on top of the stack,
704    nonzero if at least one target is on top of it.
705
706    Rather than allow an empty stack, we always have the dummy target at
707    the bottom stratum, so we can call the function vectors without
708    checking them.  */
709
710 int
711 push_target (struct target_ops *t)
712 {
713   struct target_ops **cur;
714
715   /* Check magic number.  If wrong, it probably means someone changed
716      the struct definition, but not all the places that initialize one.  */
717   if (t->to_magic != OPS_MAGIC)
718     {
719       fprintf_unfiltered (gdb_stderr,
720                           "Magic number of %s target struct wrong\n",
721                           t->to_shortname);
722       internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
723     }
724
725   /* Find the proper stratum to install this target in.  */
726   for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
727     {
728       if ((int) (t->to_stratum) >= (int) (*cur)->to_stratum)
729         break;
730     }
731
732   /* If there's already targets at this stratum, remove them.  */
733   /* FIXME: cagney/2003-10-15: I think this should be popping all
734      targets to CUR, and not just those at this stratum level.  */
735   while ((*cur) != NULL && t->to_stratum == (*cur)->to_stratum)
736     {
737       /* There's already something at this stratum level.  Close it,
738          and un-hook it from the stack.  */
739       struct target_ops *tmp = (*cur);
740       (*cur) = (*cur)->beneath;
741       tmp->beneath = NULL;
742       target_close (tmp, 0);
743     }
744
745   /* We have removed all targets in our stratum, now add the new one.  */
746   t->beneath = (*cur);
747   (*cur) = t;
748
749   update_current_target ();
750
751   /* Not on top?  */
752   return (t != target_stack);
753 }
754
755 /* Remove a target_ops vector from the stack, wherever it may be.
756    Return how many times it was removed (0 or 1).  */
757
758 int
759 unpush_target (struct target_ops *t)
760 {
761   struct target_ops **cur;
762   struct target_ops *tmp;
763
764   /* Look for the specified target.  Note that we assume that a target
765      can only occur once in the target stack. */
766
767   for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
768     {
769       if ((*cur) == t)
770         break;
771     }
772
773   if ((*cur) == NULL)
774     return 0;                   /* Didn't find target_ops, quit now */
775
776   /* NOTE: cagney/2003-12-06: In '94 the close call was made
777      unconditional by moving it to before the above check that the
778      target was in the target stack (something about "Change the way
779      pushing and popping of targets work to support target overlays
780      and inheritance").  This doesn't make much sense - only open
781      targets should be closed.  */
782   target_close (t, 0);
783
784   /* Unchain the target */
785   tmp = (*cur);
786   (*cur) = (*cur)->beneath;
787   tmp->beneath = NULL;
788
789   update_current_target ();
790
791   return 1;
792 }
793
794 void
795 pop_target (void)
796 {
797   target_close (&current_target, 0);    /* Let it clean up */
798   if (unpush_target (target_stack) == 1)
799     return;
800
801   fprintf_unfiltered (gdb_stderr,
802                       "pop_target couldn't find target %s\n",
803                       current_target.to_shortname);
804   internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
805 }
806
807 /* Using the objfile specified in OBJFILE, find the address for the
808    current thread's thread-local storage with offset OFFSET.  */
809 CORE_ADDR
810 target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset)
811 {
812   volatile CORE_ADDR addr = 0;
813
814   if (target_get_thread_local_address_p ()
815       && gdbarch_fetch_tls_load_module_address_p (current_gdbarch))
816     {
817       ptid_t ptid = inferior_ptid;
818       volatile struct gdb_exception ex;
819
820       TRY_CATCH (ex, RETURN_MASK_ALL)
821         {
822           CORE_ADDR lm_addr;
823           
824           /* Fetch the load module address for this objfile.  */
825           lm_addr = gdbarch_fetch_tls_load_module_address (current_gdbarch,
826                                                            objfile);
827           /* If it's 0, throw the appropriate exception.  */
828           if (lm_addr == 0)
829             throw_error (TLS_LOAD_MODULE_NOT_FOUND_ERROR,
830                          _("TLS load module not found"));
831
832           addr = target_get_thread_local_address (ptid, lm_addr, offset);
833         }
834       /* If an error occurred, print TLS related messages here.  Otherwise,
835          throw the error to some higher catcher.  */
836       if (ex.reason < 0)
837         {
838           int objfile_is_library = (objfile->flags & OBJF_SHARED);
839
840           switch (ex.error)
841             {
842             case TLS_NO_LIBRARY_SUPPORT_ERROR:
843               error (_("Cannot find thread-local variables in this thread library."));
844               break;
845             case TLS_LOAD_MODULE_NOT_FOUND_ERROR:
846               if (objfile_is_library)
847                 error (_("Cannot find shared library `%s' in dynamic"
848                          " linker's load module list"), objfile->name);
849               else
850                 error (_("Cannot find executable file `%s' in dynamic"
851                          " linker's load module list"), objfile->name);
852               break;
853             case TLS_NOT_ALLOCATED_YET_ERROR:
854               if (objfile_is_library)
855                 error (_("The inferior has not yet allocated storage for"
856                          " thread-local variables in\n"
857                          "the shared library `%s'\n"
858                          "for %s"),
859                        objfile->name, target_pid_to_str (ptid));
860               else
861                 error (_("The inferior has not yet allocated storage for"
862                          " thread-local variables in\n"
863                          "the executable `%s'\n"
864                          "for %s"),
865                        objfile->name, target_pid_to_str (ptid));
866               break;
867             case TLS_GENERIC_ERROR:
868               if (objfile_is_library)
869                 error (_("Cannot find thread-local storage for %s, "
870                          "shared library %s:\n%s"),
871                        target_pid_to_str (ptid),
872                        objfile->name, ex.message);
873               else
874                 error (_("Cannot find thread-local storage for %s, "
875                          "executable file %s:\n%s"),
876                        target_pid_to_str (ptid),
877                        objfile->name, ex.message);
878               break;
879             default:
880               throw_exception (ex);
881               break;
882             }
883         }
884     }
885   /* It wouldn't be wrong here to try a gdbarch method, too; finding
886      TLS is an ABI-specific thing.  But we don't do that yet.  */
887   else
888     error (_("Cannot find thread-local variables on this target"));
889
890   return addr;
891 }
892
893 #undef  MIN
894 #define MIN(A, B) (((A) <= (B)) ? (A) : (B))
895
896 /* target_read_string -- read a null terminated string, up to LEN bytes,
897    from MEMADDR in target.  Set *ERRNOP to the errno code, or 0 if successful.
898    Set *STRING to a pointer to malloc'd memory containing the data; the caller
899    is responsible for freeing it.  Return the number of bytes successfully
900    read.  */
901
902 int
903 target_read_string (CORE_ADDR memaddr, char **string, int len, int *errnop)
904 {
905   int tlen, origlen, offset, i;
906   gdb_byte buf[4];
907   int errcode = 0;
908   char *buffer;
909   int buffer_allocated;
910   char *bufptr;
911   unsigned int nbytes_read = 0;
912
913   gdb_assert (string);
914
915   /* Small for testing.  */
916   buffer_allocated = 4;
917   buffer = xmalloc (buffer_allocated);
918   bufptr = buffer;
919
920   origlen = len;
921
922   while (len > 0)
923     {
924       tlen = MIN (len, 4 - (memaddr & 3));
925       offset = memaddr & 3;
926
927       errcode = target_read_memory (memaddr & ~3, buf, sizeof buf);
928       if (errcode != 0)
929         {
930           /* The transfer request might have crossed the boundary to an
931              unallocated region of memory. Retry the transfer, requesting
932              a single byte.  */
933           tlen = 1;
934           offset = 0;
935           errcode = target_read_memory (memaddr, buf, 1);
936           if (errcode != 0)
937             goto done;
938         }
939
940       if (bufptr - buffer + tlen > buffer_allocated)
941         {
942           unsigned int bytes;
943           bytes = bufptr - buffer;
944           buffer_allocated *= 2;
945           buffer = xrealloc (buffer, buffer_allocated);
946           bufptr = buffer + bytes;
947         }
948
949       for (i = 0; i < tlen; i++)
950         {
951           *bufptr++ = buf[i + offset];
952           if (buf[i + offset] == '\000')
953             {
954               nbytes_read += i + 1;
955               goto done;
956             }
957         }
958
959       memaddr += tlen;
960       len -= tlen;
961       nbytes_read += tlen;
962     }
963 done:
964   *string = buffer;
965   if (errnop != NULL)
966     *errnop = errcode;
967   return nbytes_read;
968 }
969
970 /* Find a section containing ADDR.  */
971 struct section_table *
972 target_section_by_addr (struct target_ops *target, CORE_ADDR addr)
973 {
974   struct section_table *secp;
975   for (secp = target->to_sections;
976        secp < target->to_sections_end;
977        secp++)
978     {
979       if (addr >= secp->addr && addr < secp->endaddr)
980         return secp;
981     }
982   return NULL;
983 }
984
985 /* Perform a partial memory transfer.  The arguments and return
986    value are just as for target_xfer_partial.  */
987
988 static LONGEST
989 memory_xfer_partial (struct target_ops *ops, void *readbuf, const void *writebuf,
990                      ULONGEST memaddr, LONGEST len)
991 {
992   LONGEST res;
993   int reg_len;
994   struct mem_region *region;
995
996   /* Zero length requests are ok and require no work.  */
997   if (len == 0)
998     return 0;
999
1000   /* Try the executable file, if "trust-readonly-sections" is set.  */
1001   if (readbuf != NULL && trust_readonly)
1002     {
1003       struct section_table *secp;
1004
1005       secp = target_section_by_addr (ops, memaddr);
1006       if (secp != NULL
1007           && (bfd_get_section_flags (secp->bfd, secp->the_bfd_section)
1008               & SEC_READONLY))
1009         return xfer_memory (memaddr, readbuf, len, 0, NULL, ops);
1010     }
1011
1012   /* Likewise for accesses to unmapped overlay sections.  */
1013   if (readbuf != NULL && overlay_debugging)
1014     {
1015       asection *section = find_pc_overlay (memaddr);
1016       if (pc_in_unmapped_range (memaddr, section))
1017         return xfer_memory (memaddr, readbuf, len, 0, NULL, ops);
1018     }
1019
1020   /* Try GDB's internal data cache.  */
1021   region = lookup_mem_region (memaddr);
1022   /* region->hi == 0 means there's no upper bound.  */
1023   if (memaddr + len < region->hi || region->hi == 0)
1024     reg_len = len;
1025   else
1026     reg_len = region->hi - memaddr;
1027
1028   switch (region->attrib.mode)
1029     {
1030     case MEM_RO:
1031       if (writebuf != NULL)
1032         return -1;
1033       break;
1034
1035     case MEM_WO:
1036       if (readbuf != NULL)
1037         return -1;
1038       break;
1039
1040     case MEM_FLASH:
1041       /* We only support writing to flash during "load" for now.  */
1042       if (writebuf != NULL)
1043         error (_("Writing to flash memory forbidden in this context"));
1044       break;
1045
1046     case MEM_NONE:
1047       return -1;
1048     }
1049
1050   if (region->attrib.cache)
1051     {
1052       /* FIXME drow/2006-08-09: This call discards OPS, so the raw
1053          memory request will start back at current_target.  */
1054       if (readbuf != NULL)
1055         res = dcache_xfer_memory (target_dcache, memaddr, readbuf,
1056                                   reg_len, 0);
1057       else
1058         /* FIXME drow/2006-08-09: If we're going to preserve const
1059            correctness dcache_xfer_memory should take readbuf and
1060            writebuf.  */
1061         res = dcache_xfer_memory (target_dcache, memaddr,
1062                                   (void *) writebuf,
1063                                   reg_len, 1);
1064       if (res <= 0)
1065         return -1;
1066       else
1067         return res;
1068     }
1069
1070   /* If none of those methods found the memory we wanted, fall back
1071      to a target partial transfer.  Normally a single call to
1072      to_xfer_partial is enough; if it doesn't recognize an object
1073      it will call the to_xfer_partial of the next target down.
1074      But for memory this won't do.  Memory is the only target
1075      object which can be read from more than one valid target.
1076      A core file, for instance, could have some of memory but
1077      delegate other bits to the target below it.  So, we must
1078      manually try all targets.  */
1079
1080   do
1081     {
1082       res = ops->to_xfer_partial (ops, TARGET_OBJECT_MEMORY, NULL,
1083                                   readbuf, writebuf, memaddr, reg_len);
1084       if (res > 0)
1085         return res;
1086
1087       /* We want to continue past core files to executables, but not
1088          past a running target's memory.  */
1089       if (ops->to_has_all_memory)
1090         return res;
1091
1092       ops = ops->beneath;
1093     }
1094   while (ops != NULL);
1095
1096   /* If we still haven't got anything, return the last error.  We
1097      give up.  */
1098   return res;
1099 }
1100
1101 static LONGEST
1102 target_xfer_partial (struct target_ops *ops,
1103                      enum target_object object, const char *annex,
1104                      void *readbuf, const void *writebuf,
1105                      ULONGEST offset, LONGEST len)
1106 {
1107   LONGEST retval;
1108
1109   gdb_assert (ops->to_xfer_partial != NULL);
1110
1111   /* If this is a memory transfer, let the memory-specific code
1112      have a look at it instead.  Memory transfers are more
1113      complicated.  */
1114   if (object == TARGET_OBJECT_MEMORY)
1115     retval = memory_xfer_partial (ops, readbuf, writebuf, offset, len);
1116   else
1117     {
1118       enum target_object raw_object = object;
1119
1120       /* If this is a raw memory transfer, request the normal
1121          memory object from other layers.  */
1122       if (raw_object == TARGET_OBJECT_RAW_MEMORY)
1123         raw_object = TARGET_OBJECT_MEMORY;
1124
1125       retval = ops->to_xfer_partial (ops, raw_object, annex, readbuf,
1126                                      writebuf, offset, len);
1127     }
1128
1129   if (targetdebug)
1130     {
1131       const unsigned char *myaddr = NULL;
1132
1133       fprintf_unfiltered (gdb_stdlog,
1134                           "%s:target_xfer_partial (%d, %s, 0x%lx,  0x%lx,  0x%s, %s) = %s",
1135                           ops->to_shortname,
1136                           (int) object,
1137                           (annex ? annex : "(null)"),
1138                           (long) readbuf, (long) writebuf,
1139                           paddr_nz (offset), paddr_d (len), paddr_d (retval));
1140
1141       if (readbuf)
1142         myaddr = readbuf;
1143       if (writebuf)
1144         myaddr = writebuf;
1145       if (retval > 0 && myaddr != NULL)
1146         {
1147           int i;
1148
1149           fputs_unfiltered (", bytes =", gdb_stdlog);
1150           for (i = 0; i < retval; i++)
1151             {
1152               if ((((long) &(myaddr[i])) & 0xf) == 0)
1153                 {
1154                   if (targetdebug < 2 && i > 0)
1155                     {
1156                       fprintf_unfiltered (gdb_stdlog, " ...");
1157                       break;
1158                     }
1159                   fprintf_unfiltered (gdb_stdlog, "\n");
1160                 }
1161
1162               fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
1163             }
1164         }
1165
1166       fputc_unfiltered ('\n', gdb_stdlog);
1167     }
1168   return retval;
1169 }
1170
1171 /* Read LEN bytes of target memory at address MEMADDR, placing the results in
1172    GDB's memory at MYADDR.  Returns either 0 for success or an errno value
1173    if any error occurs.
1174
1175    If an error occurs, no guarantee is made about the contents of the data at
1176    MYADDR.  In particular, the caller should not depend upon partial reads
1177    filling the buffer with good data.  There is no way for the caller to know
1178    how much good data might have been transfered anyway.  Callers that can
1179    deal with partial reads should call target_read (which will retry until
1180    it makes no progress, and then return how much was transferred). */
1181
1182 int
1183 target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
1184 {
1185   if (target_read (&current_target, TARGET_OBJECT_MEMORY, NULL,
1186                    myaddr, memaddr, len) == len)
1187     return 0;
1188   else
1189     return EIO;
1190 }
1191
1192 int
1193 target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len)
1194 {
1195   if (target_write (&current_target, TARGET_OBJECT_MEMORY, NULL,
1196                     myaddr, memaddr, len) == len)
1197     return 0;
1198   else
1199     return EIO;
1200 }
1201
1202 /* Fetch the target's memory map.  */
1203
1204 VEC(mem_region_s) *
1205 target_memory_map (void)
1206 {
1207   VEC(mem_region_s) *result;
1208   struct mem_region *last_one, *this_one;
1209   int ix;
1210   struct target_ops *t;
1211
1212   if (targetdebug)
1213     fprintf_unfiltered (gdb_stdlog, "target_memory_map ()\n");
1214
1215   for (t = current_target.beneath; t != NULL; t = t->beneath)
1216     if (t->to_memory_map != NULL)
1217       break;
1218
1219   if (t == NULL)
1220     return NULL;
1221
1222   result = t->to_memory_map (t);
1223   if (result == NULL)
1224     return NULL;
1225
1226   qsort (VEC_address (mem_region_s, result),
1227          VEC_length (mem_region_s, result),
1228          sizeof (struct mem_region), mem_region_cmp);
1229
1230   /* Check that regions do not overlap.  Simultaneously assign
1231      a numbering for the "mem" commands to use to refer to
1232      each region.  */
1233   last_one = NULL;
1234   for (ix = 0; VEC_iterate (mem_region_s, result, ix, this_one); ix++)
1235     {
1236       this_one->number = ix;
1237
1238       if (last_one && last_one->hi > this_one->lo)
1239         {
1240           warning (_("Overlapping regions in memory map: ignoring"));
1241           VEC_free (mem_region_s, result);
1242           return NULL;
1243         }
1244       last_one = this_one;
1245     }
1246
1247   return result;
1248 }
1249
1250 void
1251 target_flash_erase (ULONGEST address, LONGEST length)
1252 {
1253   struct target_ops *t;
1254
1255   for (t = current_target.beneath; t != NULL; t = t->beneath)
1256     if (t->to_flash_erase != NULL)
1257         {
1258           if (targetdebug)
1259             fprintf_unfiltered (gdb_stdlog, "target_flash_erase (%s, %s)\n",
1260                                 paddr (address), phex (length, 0));
1261           t->to_flash_erase (t, address, length);
1262           return;
1263         }
1264
1265   tcomplain ();
1266 }
1267
1268 void
1269 target_flash_done (void)
1270 {
1271   struct target_ops *t;
1272
1273   for (t = current_target.beneath; t != NULL; t = t->beneath)
1274     if (t->to_flash_done != NULL)
1275         {
1276           if (targetdebug)
1277             fprintf_unfiltered (gdb_stdlog, "target_flash_done\n");
1278           t->to_flash_done (t);
1279           return;
1280         }
1281
1282   tcomplain ();
1283 }
1284
1285 #ifndef target_stopped_data_address_p
1286 int
1287 target_stopped_data_address_p (struct target_ops *target)
1288 {
1289   if (target->to_stopped_data_address
1290       == (int (*) (struct target_ops *, CORE_ADDR *)) return_zero)
1291     return 0;
1292   if (target->to_stopped_data_address == debug_to_stopped_data_address
1293       && (debug_target.to_stopped_data_address
1294           == (int (*) (struct target_ops *, CORE_ADDR *)) return_zero))
1295     return 0;
1296   return 1;
1297 }
1298 #endif
1299
1300 static void
1301 show_trust_readonly (struct ui_file *file, int from_tty,
1302                      struct cmd_list_element *c, const char *value)
1303 {
1304   fprintf_filtered (file, _("\
1305 Mode for reading from readonly sections is %s.\n"),
1306                     value);
1307 }
1308
1309 /* More generic transfers.  */
1310
1311 static LONGEST
1312 default_xfer_partial (struct target_ops *ops, enum target_object object,
1313                       const char *annex, gdb_byte *readbuf,
1314                       const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
1315 {
1316   if (object == TARGET_OBJECT_MEMORY
1317       && ops->deprecated_xfer_memory != NULL)
1318     /* If available, fall back to the target's
1319        "deprecated_xfer_memory" method.  */
1320     {
1321       int xfered = -1;
1322       errno = 0;
1323       if (writebuf != NULL)
1324         {
1325           void *buffer = xmalloc (len);
1326           struct cleanup *cleanup = make_cleanup (xfree, buffer);
1327           memcpy (buffer, writebuf, len);
1328           xfered = ops->deprecated_xfer_memory (offset, buffer, len,
1329                                                 1/*write*/, NULL, ops);
1330           do_cleanups (cleanup);
1331         }
1332       if (readbuf != NULL)
1333         xfered = ops->deprecated_xfer_memory (offset, readbuf, len, 0/*read*/,
1334                                               NULL, ops);
1335       if (xfered > 0)
1336         return xfered;
1337       else if (xfered == 0 && errno == 0)
1338         /* "deprecated_xfer_memory" uses 0, cross checked against
1339            ERRNO as one indication of an error.  */
1340         return 0;
1341       else
1342         return -1;
1343     }
1344   else if (ops->beneath != NULL)
1345     return ops->beneath->to_xfer_partial (ops->beneath, object, annex,
1346                                           readbuf, writebuf, offset, len);
1347   else
1348     return -1;
1349 }
1350
1351 /* The xfer_partial handler for the topmost target.  Unlike the default,
1352    it does not need to handle memory specially; it just passes all
1353    requests down the stack.  */
1354
1355 static LONGEST
1356 current_xfer_partial (struct target_ops *ops, enum target_object object,
1357                       const char *annex, gdb_byte *readbuf,
1358                       const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
1359 {
1360   if (ops->beneath != NULL)
1361     return ops->beneath->to_xfer_partial (ops->beneath, object, annex,
1362                                           readbuf, writebuf, offset, len);
1363   else
1364     return -1;
1365 }
1366
1367 /* Target vector read/write partial wrapper functions.
1368
1369    NOTE: cagney/2003-10-21: I wonder if having "to_xfer_partial
1370    (inbuf, outbuf)", instead of separate read/write methods, make life
1371    easier.  */
1372
1373 static LONGEST
1374 target_read_partial (struct target_ops *ops,
1375                      enum target_object object,
1376                      const char *annex, gdb_byte *buf,
1377                      ULONGEST offset, LONGEST len)
1378 {
1379   return target_xfer_partial (ops, object, annex, buf, NULL, offset, len);
1380 }
1381
1382 static LONGEST
1383 target_write_partial (struct target_ops *ops,
1384                       enum target_object object,
1385                       const char *annex, const gdb_byte *buf,
1386                       ULONGEST offset, LONGEST len)
1387 {
1388   return target_xfer_partial (ops, object, annex, NULL, buf, offset, len);
1389 }
1390
1391 /* Wrappers to perform the full transfer.  */
1392 LONGEST
1393 target_read (struct target_ops *ops,
1394              enum target_object object,
1395              const char *annex, gdb_byte *buf,
1396              ULONGEST offset, LONGEST len)
1397 {
1398   LONGEST xfered = 0;
1399   while (xfered < len)
1400     {
1401       LONGEST xfer = target_read_partial (ops, object, annex,
1402                                           (gdb_byte *) buf + xfered,
1403                                           offset + xfered, len - xfered);
1404       /* Call an observer, notifying them of the xfer progress?  */
1405       if (xfer == 0)
1406         return xfered;
1407       if (xfer < 0)
1408         return -1;
1409       xfered += xfer;
1410       QUIT;
1411     }
1412   return len;
1413 }
1414
1415 /* An alternative to target_write with progress callbacks.  */
1416
1417 LONGEST
1418 target_write_with_progress (struct target_ops *ops,
1419                             enum target_object object,
1420                             const char *annex, const gdb_byte *buf,
1421                             ULONGEST offset, LONGEST len,
1422                             void (*progress) (ULONGEST, void *), void *baton)
1423 {
1424   LONGEST xfered = 0;
1425
1426   /* Give the progress callback a chance to set up.  */
1427   if (progress)
1428     (*progress) (0, baton);
1429
1430   while (xfered < len)
1431     {
1432       LONGEST xfer = target_write_partial (ops, object, annex,
1433                                            (gdb_byte *) buf + xfered,
1434                                            offset + xfered, len - xfered);
1435
1436       if (xfer == 0)
1437         return xfered;
1438       if (xfer < 0)
1439         return -1;
1440
1441       if (progress)
1442         (*progress) (xfer, baton);
1443
1444       xfered += xfer;
1445       QUIT;
1446     }
1447   return len;
1448 }
1449
1450 LONGEST
1451 target_write (struct target_ops *ops,
1452               enum target_object object,
1453               const char *annex, const gdb_byte *buf,
1454               ULONGEST offset, LONGEST len)
1455 {
1456   return target_write_with_progress (ops, object, annex, buf, offset, len,
1457                                      NULL, NULL);
1458 }
1459
1460 /* Read OBJECT/ANNEX using OPS.  Store the result in *BUF_P and return
1461    the size of the transferred data.  PADDING additional bytes are
1462    available in *BUF_P.  This is a helper function for
1463    target_read_alloc; see the declaration of that function for more
1464    information.  */
1465
1466 static LONGEST
1467 target_read_alloc_1 (struct target_ops *ops, enum target_object object,
1468                      const char *annex, gdb_byte **buf_p, int padding)
1469 {
1470   size_t buf_alloc, buf_pos;
1471   gdb_byte *buf;
1472   LONGEST n;
1473
1474   /* This function does not have a length parameter; it reads the
1475      entire OBJECT).  Also, it doesn't support objects fetched partly
1476      from one target and partly from another (in a different stratum,
1477      e.g. a core file and an executable).  Both reasons make it
1478      unsuitable for reading memory.  */
1479   gdb_assert (object != TARGET_OBJECT_MEMORY);
1480
1481   /* Start by reading up to 4K at a time.  The target will throttle
1482      this number down if necessary.  */
1483   buf_alloc = 4096;
1484   buf = xmalloc (buf_alloc);
1485   buf_pos = 0;
1486   while (1)
1487     {
1488       n = target_read_partial (ops, object, annex, &buf[buf_pos],
1489                                buf_pos, buf_alloc - buf_pos - padding);
1490       if (n < 0)
1491         {
1492           /* An error occurred.  */
1493           xfree (buf);
1494           return -1;
1495         }
1496       else if (n == 0)
1497         {
1498           /* Read all there was.  */
1499           if (buf_pos == 0)
1500             xfree (buf);
1501           else
1502             *buf_p = buf;
1503           return buf_pos;
1504         }
1505
1506       buf_pos += n;
1507
1508       /* If the buffer is filling up, expand it.  */
1509       if (buf_alloc < buf_pos * 2)
1510         {
1511           buf_alloc *= 2;
1512           buf = xrealloc (buf, buf_alloc);
1513         }
1514
1515       QUIT;
1516     }
1517 }
1518
1519 /* Read OBJECT/ANNEX using OPS.  Store the result in *BUF_P and return
1520    the size of the transferred data.  See the declaration in "target.h"
1521    function for more information about the return value.  */
1522
1523 LONGEST
1524 target_read_alloc (struct target_ops *ops, enum target_object object,
1525                    const char *annex, gdb_byte **buf_p)
1526 {
1527   return target_read_alloc_1 (ops, object, annex, buf_p, 0);
1528 }
1529
1530 /* Read OBJECT/ANNEX using OPS.  The result is NUL-terminated and
1531    returned as a string, allocated using xmalloc.  If an error occurs
1532    or the transfer is unsupported, NULL is returned.  Empty objects
1533    are returned as allocated but empty strings.  A warning is issued
1534    if the result contains any embedded NUL bytes.  */
1535
1536 char *
1537 target_read_stralloc (struct target_ops *ops, enum target_object object,
1538                       const char *annex)
1539 {
1540   gdb_byte *buffer;
1541   LONGEST transferred;
1542
1543   transferred = target_read_alloc_1 (ops, object, annex, &buffer, 1);
1544
1545   if (transferred < 0)
1546     return NULL;
1547
1548   if (transferred == 0)
1549     return xstrdup ("");
1550
1551   buffer[transferred] = 0;
1552   if (strlen (buffer) < transferred)
1553     warning (_("target object %d, annex %s, "
1554                "contained unexpected null characters"),
1555              (int) object, annex ? annex : "(none)");
1556
1557   return (char *) buffer;
1558 }
1559
1560 /* Memory transfer methods.  */
1561
1562 void
1563 get_target_memory (struct target_ops *ops, CORE_ADDR addr, gdb_byte *buf,
1564                    LONGEST len)
1565 {
1566   if (target_read (ops, TARGET_OBJECT_MEMORY, NULL, buf, addr, len)
1567       != len)
1568     memory_error (EIO, addr);
1569 }
1570
1571 ULONGEST
1572 get_target_memory_unsigned (struct target_ops *ops,
1573                             CORE_ADDR addr, int len)
1574 {
1575   gdb_byte buf[sizeof (ULONGEST)];
1576
1577   gdb_assert (len <= sizeof (buf));
1578   get_target_memory (ops, addr, buf, len);
1579   return extract_unsigned_integer (buf, len);
1580 }
1581
1582 static void
1583 target_info (char *args, int from_tty)
1584 {
1585   struct target_ops *t;
1586   int has_all_mem = 0;
1587
1588   if (symfile_objfile != NULL)
1589     printf_unfiltered (_("Symbols from \"%s\".\n"), symfile_objfile->name);
1590
1591   for (t = target_stack; t != NULL; t = t->beneath)
1592     {
1593       if (!t->to_has_memory)
1594         continue;
1595
1596       if ((int) (t->to_stratum) <= (int) dummy_stratum)
1597         continue;
1598       if (has_all_mem)
1599         printf_unfiltered (_("\tWhile running this, GDB does not access memory from...\n"));
1600       printf_unfiltered ("%s:\n", t->to_longname);
1601       (t->to_files_info) (t);
1602       has_all_mem = t->to_has_all_memory;
1603     }
1604 }
1605
1606 /* This function is called before any new inferior is created, e.g.
1607    by running a program, attaching, or connecting to a target.
1608    It cleans up any state from previous invocations which might
1609    change between runs.  This is a subset of what target_preopen
1610    resets (things which might change between targets).  */
1611
1612 void
1613 target_pre_inferior (int from_tty)
1614 {
1615   invalidate_target_mem_regions ();
1616
1617   target_clear_description ();
1618 }
1619
1620 /* This is to be called by the open routine before it does
1621    anything.  */
1622
1623 void
1624 target_preopen (int from_tty)
1625 {
1626   dont_repeat ();
1627
1628   if (target_has_execution)
1629     {
1630       if (!from_tty
1631           || query (_("A program is being debugged already.  Kill it? ")))
1632         target_kill ();
1633       else
1634         error (_("Program not killed."));
1635     }
1636
1637   /* Calling target_kill may remove the target from the stack.  But if
1638      it doesn't (which seems like a win for UDI), remove it now.  */
1639
1640   if (target_has_execution)
1641     pop_target ();
1642
1643   target_pre_inferior (from_tty);
1644 }
1645
1646 /* Detach a target after doing deferred register stores.  */
1647
1648 void
1649 target_detach (char *args, int from_tty)
1650 {
1651   (current_target.to_detach) (args, from_tty);
1652 }
1653
1654 void
1655 target_disconnect (char *args, int from_tty)
1656 {
1657   struct target_ops *t;
1658
1659   for (t = current_target.beneath; t != NULL; t = t->beneath)
1660     if (t->to_disconnect != NULL)
1661         {
1662           if (targetdebug)
1663             fprintf_unfiltered (gdb_stdlog, "target_disconnect (%s, %d)\n",
1664                                 args, from_tty);
1665           t->to_disconnect (t, args, from_tty);
1666           return;
1667         }
1668
1669   tcomplain ();
1670 }
1671
1672 int
1673 target_async_mask (int mask)
1674 {
1675   int saved_async_masked_status = target_async_mask_value;
1676   target_async_mask_value = mask;
1677   return saved_async_masked_status;
1678 }
1679
1680 /* Look through the list of possible targets for a target that can
1681    follow forks.  */
1682
1683 int
1684 target_follow_fork (int follow_child)
1685 {
1686   struct target_ops *t;
1687
1688   for (t = current_target.beneath; t != NULL; t = t->beneath)
1689     {
1690       if (t->to_follow_fork != NULL)
1691         {
1692           int retval = t->to_follow_fork (t, follow_child);
1693           if (targetdebug)
1694             fprintf_unfiltered (gdb_stdlog, "target_follow_fork (%d) = %d\n",
1695                                 follow_child, retval);
1696           return retval;
1697         }
1698     }
1699
1700   /* Some target returned a fork event, but did not know how to follow it.  */
1701   internal_error (__FILE__, __LINE__,
1702                   "could not find a target to follow fork");
1703 }
1704
1705 /* Look for a target which can describe architectural features, starting
1706    from TARGET.  If we find one, return its description.  */
1707
1708 const struct target_desc *
1709 target_read_description (struct target_ops *target)
1710 {
1711   struct target_ops *t;
1712
1713   for (t = target; t != NULL; t = t->beneath)
1714     if (t->to_read_description != NULL)
1715       {
1716         const struct target_desc *tdesc;
1717
1718         tdesc = t->to_read_description (t);
1719         if (tdesc)
1720           return tdesc;
1721       }
1722
1723   return NULL;
1724 }
1725
1726 /* Look through the list of possible targets for a target that can
1727    execute a run or attach command without any other data.  This is
1728    used to locate the default process stratum.
1729
1730    Result is always valid (error() is called for errors).  */
1731
1732 static struct target_ops *
1733 find_default_run_target (char *do_mesg)
1734 {
1735   struct target_ops **t;
1736   struct target_ops *runable = NULL;
1737   int count;
1738
1739   count = 0;
1740
1741   for (t = target_structs; t < target_structs + target_struct_size;
1742        ++t)
1743     {
1744       if ((*t)->to_can_run && target_can_run (*t))
1745         {
1746           runable = *t;
1747           ++count;
1748         }
1749     }
1750
1751   if (count != 1)
1752     error (_("Don't know how to %s.  Try \"help target\"."), do_mesg);
1753
1754   return runable;
1755 }
1756
1757 void
1758 find_default_attach (char *args, int from_tty)
1759 {
1760   struct target_ops *t;
1761
1762   t = find_default_run_target ("attach");
1763   (t->to_attach) (args, from_tty);
1764   return;
1765 }
1766
1767 void
1768 find_default_create_inferior (char *exec_file, char *allargs, char **env,
1769                               int from_tty)
1770 {
1771   struct target_ops *t;
1772
1773   t = find_default_run_target ("run");
1774   (t->to_create_inferior) (exec_file, allargs, env, from_tty);
1775   return;
1776 }
1777
1778 static int
1779 default_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
1780 {
1781   return (len <= TYPE_LENGTH (builtin_type_void_data_ptr));
1782 }
1783
1784 static int
1785 return_zero (void)
1786 {
1787   return 0;
1788 }
1789
1790 static int
1791 return_one (void)
1792 {
1793   return 1;
1794 }
1795
1796 static int
1797 return_minus_one (void)
1798 {
1799   return -1;
1800 }
1801
1802 /*
1803  * Resize the to_sections pointer.  Also make sure that anyone that
1804  * was holding on to an old value of it gets updated.
1805  * Returns the old size.
1806  */
1807
1808 int
1809 target_resize_to_sections (struct target_ops *target, int num_added)
1810 {
1811   struct target_ops **t;
1812   struct section_table *old_value;
1813   int old_count;
1814
1815   old_value = target->to_sections;
1816
1817   if (target->to_sections)
1818     {
1819       old_count = target->to_sections_end - target->to_sections;
1820       target->to_sections = (struct section_table *)
1821         xrealloc ((char *) target->to_sections,
1822                   (sizeof (struct section_table)) * (num_added + old_count));
1823     }
1824   else
1825     {
1826       old_count = 0;
1827       target->to_sections = (struct section_table *)
1828         xmalloc ((sizeof (struct section_table)) * num_added);
1829     }
1830   target->to_sections_end = target->to_sections + (num_added + old_count);
1831
1832   /* Check to see if anyone else was pointing to this structure.
1833      If old_value was null, then no one was. */
1834
1835   if (old_value)
1836     {
1837       for (t = target_structs; t < target_structs + target_struct_size;
1838            ++t)
1839         {
1840           if ((*t)->to_sections == old_value)
1841             {
1842               (*t)->to_sections = target->to_sections;
1843               (*t)->to_sections_end = target->to_sections_end;
1844             }
1845         }
1846       /* There is a flattened view of the target stack in current_target,
1847          so its to_sections pointer might also need updating. */
1848       if (current_target.to_sections == old_value)
1849         {
1850           current_target.to_sections = target->to_sections;
1851           current_target.to_sections_end = target->to_sections_end;
1852         }
1853     }
1854
1855   return old_count;
1856
1857 }
1858
1859 /* Remove all target sections taken from ABFD.
1860
1861    Scan the current target stack for targets whose section tables
1862    refer to sections from BFD, and remove those sections.  We use this
1863    when we notice that the inferior has unloaded a shared object, for
1864    example.  */
1865 void
1866 remove_target_sections (bfd *abfd)
1867 {
1868   struct target_ops **t;
1869
1870   for (t = target_structs; t < target_structs + target_struct_size; t++)
1871     {
1872       struct section_table *src, *dest;
1873
1874       dest = (*t)->to_sections;
1875       for (src = (*t)->to_sections; src < (*t)->to_sections_end; src++)
1876         if (src->bfd != abfd)
1877           {
1878             /* Keep this section.  */
1879             if (dest < src) *dest = *src;
1880             dest++;
1881           }
1882
1883       /* If we've dropped any sections, resize the section table.  */
1884       if (dest < src)
1885         target_resize_to_sections (*t, dest - src);
1886     }
1887 }
1888
1889
1890
1891
1892 /* Find a single runnable target in the stack and return it.  If for
1893    some reason there is more than one, return NULL.  */
1894
1895 struct target_ops *
1896 find_run_target (void)
1897 {
1898   struct target_ops **t;
1899   struct target_ops *runable = NULL;
1900   int count;
1901
1902   count = 0;
1903
1904   for (t = target_structs; t < target_structs + target_struct_size; ++t)
1905     {
1906       if ((*t)->to_can_run && target_can_run (*t))
1907         {
1908           runable = *t;
1909           ++count;
1910         }
1911     }
1912
1913   return (count == 1 ? runable : NULL);
1914 }
1915
1916 /* Find a single core_stratum target in the list of targets and return it.
1917    If for some reason there is more than one, return NULL.  */
1918
1919 struct target_ops *
1920 find_core_target (void)
1921 {
1922   struct target_ops **t;
1923   struct target_ops *runable = NULL;
1924   int count;
1925
1926   count = 0;
1927
1928   for (t = target_structs; t < target_structs + target_struct_size;
1929        ++t)
1930     {
1931       if ((*t)->to_stratum == core_stratum)
1932         {
1933           runable = *t;
1934           ++count;
1935         }
1936     }
1937
1938   return (count == 1 ? runable : NULL);
1939 }
1940
1941 /*
1942  * Find the next target down the stack from the specified target.
1943  */
1944
1945 struct target_ops *
1946 find_target_beneath (struct target_ops *t)
1947 {
1948   return t->beneath;
1949 }
1950
1951 \f
1952 /* The inferior process has died.  Long live the inferior!  */
1953
1954 void
1955 generic_mourn_inferior (void)
1956 {
1957   extern int show_breakpoint_hit_counts;
1958
1959   inferior_ptid = null_ptid;
1960   attach_flag = 0;
1961   breakpoint_init_inferior (inf_exited);
1962   registers_changed ();
1963
1964   reopen_exec_file ();
1965   reinit_frame_cache ();
1966
1967   /* It is confusing to the user for ignore counts to stick around
1968      from previous runs of the inferior.  So clear them.  */
1969   /* However, it is more confusing for the ignore counts to disappear when
1970      using hit counts.  So don't clear them if we're counting hits.  */
1971   if (!show_breakpoint_hit_counts)
1972     breakpoint_clear_ignore_counts ();
1973
1974   if (deprecated_detach_hook)
1975     deprecated_detach_hook ();
1976 }
1977 \f
1978 /* Helper function for child_wait and the derivatives of child_wait.
1979    HOSTSTATUS is the waitstatus from wait() or the equivalent; store our
1980    translation of that in OURSTATUS.  */
1981 void
1982 store_waitstatus (struct target_waitstatus *ourstatus, int hoststatus)
1983 {
1984   if (WIFEXITED (hoststatus))
1985     {
1986       ourstatus->kind = TARGET_WAITKIND_EXITED;
1987       ourstatus->value.integer = WEXITSTATUS (hoststatus);
1988     }
1989   else if (!WIFSTOPPED (hoststatus))
1990     {
1991       ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
1992       ourstatus->value.sig = target_signal_from_host (WTERMSIG (hoststatus));
1993     }
1994   else
1995     {
1996       ourstatus->kind = TARGET_WAITKIND_STOPPED;
1997       ourstatus->value.sig = target_signal_from_host (WSTOPSIG (hoststatus));
1998     }
1999 }
2000 \f
2001 /* Returns zero to leave the inferior alone, one to interrupt it.  */
2002 int (*target_activity_function) (void);
2003 int target_activity_fd;
2004 \f
2005 /* Convert a normal process ID to a string.  Returns the string in a
2006    static buffer.  */
2007
2008 char *
2009 normal_pid_to_str (ptid_t ptid)
2010 {
2011   static char buf[32];
2012
2013   xsnprintf (buf, sizeof buf, "process %d", ptid_get_pid (ptid));
2014   return buf;
2015 }
2016
2017 /* Error-catcher for target_find_memory_regions */
2018 static int dummy_find_memory_regions (int (*ignore1) (), void *ignore2)
2019 {
2020   error (_("No target."));
2021   return 0;
2022 }
2023
2024 /* Error-catcher for target_make_corefile_notes */
2025 static char * dummy_make_corefile_notes (bfd *ignore1, int *ignore2)
2026 {
2027   error (_("No target."));
2028   return NULL;
2029 }
2030
2031 /* Set up the handful of non-empty slots needed by the dummy target
2032    vector.  */
2033
2034 static void
2035 init_dummy_target (void)
2036 {
2037   dummy_target.to_shortname = "None";
2038   dummy_target.to_longname = "None";
2039   dummy_target.to_doc = "";
2040   dummy_target.to_attach = find_default_attach;
2041   dummy_target.to_create_inferior = find_default_create_inferior;
2042   dummy_target.to_pid_to_str = normal_pid_to_str;
2043   dummy_target.to_stratum = dummy_stratum;
2044   dummy_target.to_find_memory_regions = dummy_find_memory_regions;
2045   dummy_target.to_make_corefile_notes = dummy_make_corefile_notes;
2046   dummy_target.to_xfer_partial = default_xfer_partial;
2047   dummy_target.to_magic = OPS_MAGIC;
2048 }
2049 \f
2050 static void
2051 debug_to_open (char *args, int from_tty)
2052 {
2053   debug_target.to_open (args, from_tty);
2054
2055   fprintf_unfiltered (gdb_stdlog, "target_open (%s, %d)\n", args, from_tty);
2056 }
2057
2058 static void
2059 debug_to_close (int quitting)
2060 {
2061   target_close (&debug_target, quitting);
2062   fprintf_unfiltered (gdb_stdlog, "target_close (%d)\n", quitting);
2063 }
2064
2065 void
2066 target_close (struct target_ops *targ, int quitting)
2067 {
2068   if (targ->to_xclose != NULL)
2069     targ->to_xclose (targ, quitting);
2070   else if (targ->to_close != NULL)
2071     targ->to_close (quitting);
2072 }
2073
2074 static void
2075 debug_to_attach (char *args, int from_tty)
2076 {
2077   debug_target.to_attach (args, from_tty);
2078
2079   fprintf_unfiltered (gdb_stdlog, "target_attach (%s, %d)\n", args, from_tty);
2080 }
2081
2082
2083 static void
2084 debug_to_post_attach (int pid)
2085 {
2086   debug_target.to_post_attach (pid);
2087
2088   fprintf_unfiltered (gdb_stdlog, "target_post_attach (%d)\n", pid);
2089 }
2090
2091 static void
2092 debug_to_detach (char *args, int from_tty)
2093 {
2094   debug_target.to_detach (args, from_tty);
2095
2096   fprintf_unfiltered (gdb_stdlog, "target_detach (%s, %d)\n", args, from_tty);
2097 }
2098
2099 static void
2100 debug_to_resume (ptid_t ptid, int step, enum target_signal siggnal)
2101 {
2102   debug_target.to_resume (ptid, step, siggnal);
2103
2104   fprintf_unfiltered (gdb_stdlog, "target_resume (%d, %s, %s)\n", PIDGET (ptid),
2105                       step ? "step" : "continue",
2106                       target_signal_to_name (siggnal));
2107 }
2108
2109 static ptid_t
2110 debug_to_wait (ptid_t ptid, struct target_waitstatus *status)
2111 {
2112   ptid_t retval;
2113
2114   retval = debug_target.to_wait (ptid, status);
2115
2116   fprintf_unfiltered (gdb_stdlog,
2117                       "target_wait (%d, status) = %d,   ", PIDGET (ptid),
2118                       PIDGET (retval));
2119   fprintf_unfiltered (gdb_stdlog, "status->kind = ");
2120   switch (status->kind)
2121     {
2122     case TARGET_WAITKIND_EXITED:
2123       fprintf_unfiltered (gdb_stdlog, "exited, status = %d\n",
2124                           status->value.integer);
2125       break;
2126     case TARGET_WAITKIND_STOPPED:
2127       fprintf_unfiltered (gdb_stdlog, "stopped, signal = %s\n",
2128                           target_signal_to_name (status->value.sig));
2129       break;
2130     case TARGET_WAITKIND_SIGNALLED:
2131       fprintf_unfiltered (gdb_stdlog, "signalled, signal = %s\n",
2132                           target_signal_to_name (status->value.sig));
2133       break;
2134     case TARGET_WAITKIND_LOADED:
2135       fprintf_unfiltered (gdb_stdlog, "loaded\n");
2136       break;
2137     case TARGET_WAITKIND_FORKED:
2138       fprintf_unfiltered (gdb_stdlog, "forked\n");
2139       break;
2140     case TARGET_WAITKIND_VFORKED:
2141       fprintf_unfiltered (gdb_stdlog, "vforked\n");
2142       break;
2143     case TARGET_WAITKIND_EXECD:
2144       fprintf_unfiltered (gdb_stdlog, "execd\n");
2145       break;
2146     case TARGET_WAITKIND_SPURIOUS:
2147       fprintf_unfiltered (gdb_stdlog, "spurious\n");
2148       break;
2149     default:
2150       fprintf_unfiltered (gdb_stdlog, "unknown???\n");
2151       break;
2152     }
2153
2154   return retval;
2155 }
2156
2157 static void
2158 debug_print_register (const char * func,
2159                       struct regcache *regcache, int regno)
2160 {
2161   struct gdbarch *gdbarch = get_regcache_arch (regcache);
2162   fprintf_unfiltered (gdb_stdlog, "%s ", func);
2163   if (regno >= 0 && regno < gdbarch_num_regs (gdbarch)
2164                             + gdbarch_num_pseudo_regs (gdbarch)
2165       && gdbarch_register_name (gdbarch, regno) != NULL
2166       && gdbarch_register_name (gdbarch, regno)[0] != '\0')
2167     fprintf_unfiltered (gdb_stdlog, "(%s)",
2168                         gdbarch_register_name (gdbarch, regno));
2169   else
2170     fprintf_unfiltered (gdb_stdlog, "(%d)", regno);
2171   if (regno >= 0)
2172     {
2173       int i, size = register_size (gdbarch, regno);
2174       unsigned char buf[MAX_REGISTER_SIZE];
2175       regcache_cooked_read (regcache, regno, buf);
2176       fprintf_unfiltered (gdb_stdlog, " = ");
2177       for (i = 0; i < size; i++)
2178         {
2179           fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
2180         }
2181       if (size <= sizeof (LONGEST))
2182         {
2183           ULONGEST val = extract_unsigned_integer (buf, size);
2184           fprintf_unfiltered (gdb_stdlog, " 0x%s %s",
2185                               paddr_nz (val), paddr_d (val));
2186         }
2187     }
2188   fprintf_unfiltered (gdb_stdlog, "\n");
2189 }
2190
2191 static void
2192 debug_to_fetch_registers (struct regcache *regcache, int regno)
2193 {
2194   debug_target.to_fetch_registers (regcache, regno);
2195   debug_print_register ("target_fetch_registers", regcache, regno);
2196 }
2197
2198 static void
2199 debug_to_store_registers (struct regcache *regcache, int regno)
2200 {
2201   debug_target.to_store_registers (regcache, regno);
2202   debug_print_register ("target_store_registers", regcache, regno);
2203   fprintf_unfiltered (gdb_stdlog, "\n");
2204 }
2205
2206 static void
2207 debug_to_prepare_to_store (struct regcache *regcache)
2208 {
2209   debug_target.to_prepare_to_store (regcache);
2210
2211   fprintf_unfiltered (gdb_stdlog, "target_prepare_to_store ()\n");
2212 }
2213
2214 static int
2215 deprecated_debug_xfer_memory (CORE_ADDR memaddr, bfd_byte *myaddr, int len,
2216                               int write, struct mem_attrib *attrib,
2217                               struct target_ops *target)
2218 {
2219   int retval;
2220
2221   retval = debug_target.deprecated_xfer_memory (memaddr, myaddr, len, write,
2222                                                 attrib, target);
2223
2224   fprintf_unfiltered (gdb_stdlog,
2225                       "target_xfer_memory (0x%x, xxx, %d, %s, xxx) = %d",
2226                       (unsigned int) memaddr,   /* possable truncate long long */
2227                       len, write ? "write" : "read", retval);
2228
2229   if (retval > 0)
2230     {
2231       int i;
2232
2233       fputs_unfiltered (", bytes =", gdb_stdlog);
2234       for (i = 0; i < retval; i++)
2235         {
2236           if ((((long) &(myaddr[i])) & 0xf) == 0)
2237             {
2238               if (targetdebug < 2 && i > 0)
2239                 {
2240                   fprintf_unfiltered (gdb_stdlog, " ...");
2241                   break;
2242                 }
2243               fprintf_unfiltered (gdb_stdlog, "\n");
2244             }
2245
2246           fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
2247         }
2248     }
2249
2250   fputc_unfiltered ('\n', gdb_stdlog);
2251
2252   return retval;
2253 }
2254
2255 static void
2256 debug_to_files_info (struct target_ops *target)
2257 {
2258   debug_target.to_files_info (target);
2259
2260   fprintf_unfiltered (gdb_stdlog, "target_files_info (xxx)\n");
2261 }
2262
2263 static int
2264 debug_to_insert_breakpoint (struct bp_target_info *bp_tgt)
2265 {
2266   int retval;
2267
2268   retval = debug_target.to_insert_breakpoint (bp_tgt);
2269
2270   fprintf_unfiltered (gdb_stdlog,
2271                       "target_insert_breakpoint (0x%lx, xxx) = %ld\n",
2272                       (unsigned long) bp_tgt->placed_address,
2273                       (unsigned long) retval);
2274   return retval;
2275 }
2276
2277 static int
2278 debug_to_remove_breakpoint (struct bp_target_info *bp_tgt)
2279 {
2280   int retval;
2281
2282   retval = debug_target.to_remove_breakpoint (bp_tgt);
2283
2284   fprintf_unfiltered (gdb_stdlog,
2285                       "target_remove_breakpoint (0x%lx, xxx) = %ld\n",
2286                       (unsigned long) bp_tgt->placed_address,
2287                       (unsigned long) retval);
2288   return retval;
2289 }
2290
2291 static int
2292 debug_to_can_use_hw_breakpoint (int type, int cnt, int from_tty)
2293 {
2294   int retval;
2295
2296   retval = debug_target.to_can_use_hw_breakpoint (type, cnt, from_tty);
2297
2298   fprintf_unfiltered (gdb_stdlog,
2299                       "target_can_use_hw_breakpoint (%ld, %ld, %ld) = %ld\n",
2300                       (unsigned long) type,
2301                       (unsigned long) cnt,
2302                       (unsigned long) from_tty,
2303                       (unsigned long) retval);
2304   return retval;
2305 }
2306
2307 static int
2308 debug_to_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
2309 {
2310   CORE_ADDR retval;
2311
2312   retval = debug_target.to_region_ok_for_hw_watchpoint (addr, len);
2313
2314   fprintf_unfiltered (gdb_stdlog,
2315                       "TARGET_REGION_OK_FOR_HW_WATCHPOINT (%ld, %ld) = 0x%lx\n",
2316                       (unsigned long) addr,
2317                       (unsigned long) len,
2318                       (unsigned long) retval);
2319   return retval;
2320 }
2321
2322 static int
2323 debug_to_stopped_by_watchpoint (void)
2324 {
2325   int retval;
2326
2327   retval = debug_target.to_stopped_by_watchpoint ();
2328
2329   fprintf_unfiltered (gdb_stdlog,
2330                       "STOPPED_BY_WATCHPOINT () = %ld\n",
2331                       (unsigned long) retval);
2332   return retval;
2333 }
2334
2335 static int
2336 debug_to_stopped_data_address (struct target_ops *target, CORE_ADDR *addr)
2337 {
2338   int retval;
2339
2340   retval = debug_target.to_stopped_data_address (target, addr);
2341
2342   fprintf_unfiltered (gdb_stdlog,
2343                       "target_stopped_data_address ([0x%lx]) = %ld\n",
2344                       (unsigned long)*addr,
2345                       (unsigned long)retval);
2346   return retval;
2347 }
2348
2349 static int
2350 debug_to_insert_hw_breakpoint (struct bp_target_info *bp_tgt)
2351 {
2352   int retval;
2353
2354   retval = debug_target.to_insert_hw_breakpoint (bp_tgt);
2355
2356   fprintf_unfiltered (gdb_stdlog,
2357                       "target_insert_hw_breakpoint (0x%lx, xxx) = %ld\n",
2358                       (unsigned long) bp_tgt->placed_address,
2359                       (unsigned long) retval);
2360   return retval;
2361 }
2362
2363 static int
2364 debug_to_remove_hw_breakpoint (struct bp_target_info *bp_tgt)
2365 {
2366   int retval;
2367
2368   retval = debug_target.to_remove_hw_breakpoint (bp_tgt);
2369
2370   fprintf_unfiltered (gdb_stdlog,
2371                       "target_remove_hw_breakpoint (0x%lx, xxx) = %ld\n",
2372                       (unsigned long) bp_tgt->placed_address,
2373                       (unsigned long) retval);
2374   return retval;
2375 }
2376
2377 static int
2378 debug_to_insert_watchpoint (CORE_ADDR addr, int len, int type)
2379 {
2380   int retval;
2381
2382   retval = debug_target.to_insert_watchpoint (addr, len, type);
2383
2384   fprintf_unfiltered (gdb_stdlog,
2385                       "target_insert_watchpoint (0x%lx, %d, %d) = %ld\n",
2386                       (unsigned long) addr, len, type, (unsigned long) retval);
2387   return retval;
2388 }
2389
2390 static int
2391 debug_to_remove_watchpoint (CORE_ADDR addr, int len, int type)
2392 {
2393   int retval;
2394
2395   retval = debug_target.to_remove_watchpoint (addr, len, type);
2396
2397   fprintf_unfiltered (gdb_stdlog,
2398                       "target_remove_watchpoint (0x%lx, %d, %d) = %ld\n",
2399                       (unsigned long) addr, len, type, (unsigned long) retval);
2400   return retval;
2401 }
2402
2403 static void
2404 debug_to_terminal_init (void)
2405 {
2406   debug_target.to_terminal_init ();
2407
2408   fprintf_unfiltered (gdb_stdlog, "target_terminal_init ()\n");
2409 }
2410
2411 static void
2412 debug_to_terminal_inferior (void)
2413 {
2414   debug_target.to_terminal_inferior ();
2415
2416   fprintf_unfiltered (gdb_stdlog, "target_terminal_inferior ()\n");
2417 }
2418
2419 static void
2420 debug_to_terminal_ours_for_output (void)
2421 {
2422   debug_target.to_terminal_ours_for_output ();
2423
2424   fprintf_unfiltered (gdb_stdlog, "target_terminal_ours_for_output ()\n");
2425 }
2426
2427 static void
2428 debug_to_terminal_ours (void)
2429 {
2430   debug_target.to_terminal_ours ();
2431
2432   fprintf_unfiltered (gdb_stdlog, "target_terminal_ours ()\n");
2433 }
2434
2435 static void
2436 debug_to_terminal_save_ours (void)
2437 {
2438   debug_target.to_terminal_save_ours ();
2439
2440   fprintf_unfiltered (gdb_stdlog, "target_terminal_save_ours ()\n");
2441 }
2442
2443 static void
2444 debug_to_terminal_info (char *arg, int from_tty)
2445 {
2446   debug_target.to_terminal_info (arg, from_tty);
2447
2448   fprintf_unfiltered (gdb_stdlog, "target_terminal_info (%s, %d)\n", arg,
2449                       from_tty);
2450 }
2451
2452 static void
2453 debug_to_kill (void)
2454 {
2455   debug_target.to_kill ();
2456
2457   fprintf_unfiltered (gdb_stdlog, "target_kill ()\n");
2458 }
2459
2460 static void
2461 debug_to_load (char *args, int from_tty)
2462 {
2463   debug_target.to_load (args, from_tty);
2464
2465   fprintf_unfiltered (gdb_stdlog, "target_load (%s, %d)\n", args, from_tty);
2466 }
2467
2468 static int
2469 debug_to_lookup_symbol (char *name, CORE_ADDR *addrp)
2470 {
2471   int retval;
2472
2473   retval = debug_target.to_lookup_symbol (name, addrp);
2474
2475   fprintf_unfiltered (gdb_stdlog, "target_lookup_symbol (%s, xxx)\n", name);
2476
2477   return retval;
2478 }
2479
2480 static void
2481 debug_to_create_inferior (char *exec_file, char *args, char **env,
2482                           int from_tty)
2483 {
2484   debug_target.to_create_inferior (exec_file, args, env, from_tty);
2485
2486   fprintf_unfiltered (gdb_stdlog, "target_create_inferior (%s, %s, xxx, %d)\n",
2487                       exec_file, args, from_tty);
2488 }
2489
2490 static void
2491 debug_to_post_startup_inferior (ptid_t ptid)
2492 {
2493   debug_target.to_post_startup_inferior (ptid);
2494
2495   fprintf_unfiltered (gdb_stdlog, "target_post_startup_inferior (%d)\n",
2496                       PIDGET (ptid));
2497 }
2498
2499 static void
2500 debug_to_acknowledge_created_inferior (int pid)
2501 {
2502   debug_target.to_acknowledge_created_inferior (pid);
2503
2504   fprintf_unfiltered (gdb_stdlog, "target_acknowledge_created_inferior (%d)\n",
2505                       pid);
2506 }
2507
2508 static void
2509 debug_to_insert_fork_catchpoint (int pid)
2510 {
2511   debug_target.to_insert_fork_catchpoint (pid);
2512
2513   fprintf_unfiltered (gdb_stdlog, "target_insert_fork_catchpoint (%d)\n",
2514                       pid);
2515 }
2516
2517 static int
2518 debug_to_remove_fork_catchpoint (int pid)
2519 {
2520   int retval;
2521
2522   retval = debug_target.to_remove_fork_catchpoint (pid);
2523
2524   fprintf_unfiltered (gdb_stdlog, "target_remove_fork_catchpoint (%d) = %d\n",
2525                       pid, retval);
2526
2527   return retval;
2528 }
2529
2530 static void
2531 debug_to_insert_vfork_catchpoint (int pid)
2532 {
2533   debug_target.to_insert_vfork_catchpoint (pid);
2534
2535   fprintf_unfiltered (gdb_stdlog, "target_insert_vfork_catchpoint (%d)\n",
2536                       pid);
2537 }
2538
2539 static int
2540 debug_to_remove_vfork_catchpoint (int pid)
2541 {
2542   int retval;
2543
2544   retval = debug_target.to_remove_vfork_catchpoint (pid);
2545
2546   fprintf_unfiltered (gdb_stdlog, "target_remove_vfork_catchpoint (%d) = %d\n",
2547                       pid, retval);
2548
2549   return retval;
2550 }
2551
2552 static void
2553 debug_to_insert_exec_catchpoint (int pid)
2554 {
2555   debug_target.to_insert_exec_catchpoint (pid);
2556
2557   fprintf_unfiltered (gdb_stdlog, "target_insert_exec_catchpoint (%d)\n",
2558                       pid);
2559 }
2560
2561 static int
2562 debug_to_remove_exec_catchpoint (int pid)
2563 {
2564   int retval;
2565
2566   retval = debug_target.to_remove_exec_catchpoint (pid);
2567
2568   fprintf_unfiltered (gdb_stdlog, "target_remove_exec_catchpoint (%d) = %d\n",
2569                       pid, retval);
2570
2571   return retval;
2572 }
2573
2574 static int
2575 debug_to_reported_exec_events_per_exec_call (void)
2576 {
2577   int reported_exec_events;
2578
2579   reported_exec_events = debug_target.to_reported_exec_events_per_exec_call ();
2580
2581   fprintf_unfiltered (gdb_stdlog,
2582                       "target_reported_exec_events_per_exec_call () = %d\n",
2583                       reported_exec_events);
2584
2585   return reported_exec_events;
2586 }
2587
2588 static int
2589 debug_to_has_exited (int pid, int wait_status, int *exit_status)
2590 {
2591   int has_exited;
2592
2593   has_exited = debug_target.to_has_exited (pid, wait_status, exit_status);
2594
2595   fprintf_unfiltered (gdb_stdlog, "target_has_exited (%d, %d, %d) = %d\n",
2596                       pid, wait_status, *exit_status, has_exited);
2597
2598   return has_exited;
2599 }
2600
2601 static void
2602 debug_to_mourn_inferior (void)
2603 {
2604   debug_target.to_mourn_inferior ();
2605
2606   fprintf_unfiltered (gdb_stdlog, "target_mourn_inferior ()\n");
2607 }
2608
2609 static int
2610 debug_to_can_run (void)
2611 {
2612   int retval;
2613
2614   retval = debug_target.to_can_run ();
2615
2616   fprintf_unfiltered (gdb_stdlog, "target_can_run () = %d\n", retval);
2617
2618   return retval;
2619 }
2620
2621 static void
2622 debug_to_notice_signals (ptid_t ptid)
2623 {
2624   debug_target.to_notice_signals (ptid);
2625
2626   fprintf_unfiltered (gdb_stdlog, "target_notice_signals (%d)\n",
2627                       PIDGET (ptid));
2628 }
2629
2630 static int
2631 debug_to_thread_alive (ptid_t ptid)
2632 {
2633   int retval;
2634
2635   retval = debug_target.to_thread_alive (ptid);
2636
2637   fprintf_unfiltered (gdb_stdlog, "target_thread_alive (%d) = %d\n",
2638                       PIDGET (ptid), retval);
2639
2640   return retval;
2641 }
2642
2643 static void
2644 debug_to_find_new_threads (void)
2645 {
2646   debug_target.to_find_new_threads ();
2647
2648   fputs_unfiltered ("target_find_new_threads ()\n", gdb_stdlog);
2649 }
2650
2651 static void
2652 debug_to_stop (void)
2653 {
2654   debug_target.to_stop ();
2655
2656   fprintf_unfiltered (gdb_stdlog, "target_stop ()\n");
2657 }
2658
2659 static void
2660 debug_to_rcmd (char *command,
2661                struct ui_file *outbuf)
2662 {
2663   debug_target.to_rcmd (command, outbuf);
2664   fprintf_unfiltered (gdb_stdlog, "target_rcmd (%s, ...)\n", command);
2665 }
2666
2667 static char *
2668 debug_to_pid_to_exec_file (int pid)
2669 {
2670   char *exec_file;
2671
2672   exec_file = debug_target.to_pid_to_exec_file (pid);
2673
2674   fprintf_unfiltered (gdb_stdlog, "target_pid_to_exec_file (%d) = %s\n",
2675                       pid, exec_file);
2676
2677   return exec_file;
2678 }
2679
2680 static void
2681 setup_target_debug (void)
2682 {
2683   memcpy (&debug_target, &current_target, sizeof debug_target);
2684
2685   current_target.to_open = debug_to_open;
2686   current_target.to_close = debug_to_close;
2687   current_target.to_attach = debug_to_attach;
2688   current_target.to_post_attach = debug_to_post_attach;
2689   current_target.to_detach = debug_to_detach;
2690   current_target.to_resume = debug_to_resume;
2691   current_target.to_wait = debug_to_wait;
2692   current_target.to_fetch_registers = debug_to_fetch_registers;
2693   current_target.to_store_registers = debug_to_store_registers;
2694   current_target.to_prepare_to_store = debug_to_prepare_to_store;
2695   current_target.deprecated_xfer_memory = deprecated_debug_xfer_memory;
2696   current_target.to_files_info = debug_to_files_info;
2697   current_target.to_insert_breakpoint = debug_to_insert_breakpoint;
2698   current_target.to_remove_breakpoint = debug_to_remove_breakpoint;
2699   current_target.to_can_use_hw_breakpoint = debug_to_can_use_hw_breakpoint;
2700   current_target.to_insert_hw_breakpoint = debug_to_insert_hw_breakpoint;
2701   current_target.to_remove_hw_breakpoint = debug_to_remove_hw_breakpoint;
2702   current_target.to_insert_watchpoint = debug_to_insert_watchpoint;
2703   current_target.to_remove_watchpoint = debug_to_remove_watchpoint;
2704   current_target.to_stopped_by_watchpoint = debug_to_stopped_by_watchpoint;
2705   current_target.to_stopped_data_address = debug_to_stopped_data_address;
2706   current_target.to_region_ok_for_hw_watchpoint = debug_to_region_ok_for_hw_watchpoint;
2707   current_target.to_terminal_init = debug_to_terminal_init;
2708   current_target.to_terminal_inferior = debug_to_terminal_inferior;
2709   current_target.to_terminal_ours_for_output = debug_to_terminal_ours_for_output;
2710   current_target.to_terminal_ours = debug_to_terminal_ours;
2711   current_target.to_terminal_save_ours = debug_to_terminal_save_ours;
2712   current_target.to_terminal_info = debug_to_terminal_info;
2713   current_target.to_kill = debug_to_kill;
2714   current_target.to_load = debug_to_load;
2715   current_target.to_lookup_symbol = debug_to_lookup_symbol;
2716   current_target.to_create_inferior = debug_to_create_inferior;
2717   current_target.to_post_startup_inferior = debug_to_post_startup_inferior;
2718   current_target.to_acknowledge_created_inferior = debug_to_acknowledge_created_inferior;
2719   current_target.to_insert_fork_catchpoint = debug_to_insert_fork_catchpoint;
2720   current_target.to_remove_fork_catchpoint = debug_to_remove_fork_catchpoint;
2721   current_target.to_insert_vfork_catchpoint = debug_to_insert_vfork_catchpoint;
2722   current_target.to_remove_vfork_catchpoint = debug_to_remove_vfork_catchpoint;
2723   current_target.to_insert_exec_catchpoint = debug_to_insert_exec_catchpoint;
2724   current_target.to_remove_exec_catchpoint = debug_to_remove_exec_catchpoint;
2725   current_target.to_reported_exec_events_per_exec_call = debug_to_reported_exec_events_per_exec_call;
2726   current_target.to_has_exited = debug_to_has_exited;
2727   current_target.to_mourn_inferior = debug_to_mourn_inferior;
2728   current_target.to_can_run = debug_to_can_run;
2729   current_target.to_notice_signals = debug_to_notice_signals;
2730   current_target.to_thread_alive = debug_to_thread_alive;
2731   current_target.to_find_new_threads = debug_to_find_new_threads;
2732   current_target.to_stop = debug_to_stop;
2733   current_target.to_rcmd = debug_to_rcmd;
2734   current_target.to_pid_to_exec_file = debug_to_pid_to_exec_file;
2735 }
2736 \f
2737
2738 static char targ_desc[] =
2739 "Names of targets and files being debugged.\n\
2740 Shows the entire stack of targets currently in use (including the exec-file,\n\
2741 core-file, and process, if any), as well as the symbol file name.";
2742
2743 static void
2744 do_monitor_command (char *cmd,
2745                  int from_tty)
2746 {
2747   if ((current_target.to_rcmd
2748        == (void (*) (char *, struct ui_file *)) tcomplain)
2749       || (current_target.to_rcmd == debug_to_rcmd
2750           && (debug_target.to_rcmd
2751               == (void (*) (char *, struct ui_file *)) tcomplain)))
2752     error (_("\"monitor\" command not supported by this target."));
2753   target_rcmd (cmd, gdb_stdtarg);
2754 }
2755
2756 /* Print the name of each layers of our target stack.  */
2757
2758 static void
2759 maintenance_print_target_stack (char *cmd, int from_tty)
2760 {
2761   struct target_ops *t;
2762
2763   printf_filtered (_("The current target stack is:\n"));
2764
2765   for (t = target_stack; t != NULL; t = t->beneath)
2766     {
2767       printf_filtered ("  - %s (%s)\n", t->to_shortname, t->to_longname);
2768     }
2769 }
2770
2771 void
2772 initialize_targets (void)
2773 {
2774   init_dummy_target ();
2775   push_target (&dummy_target);
2776
2777   add_info ("target", target_info, targ_desc);
2778   add_info ("files", target_info, targ_desc);
2779
2780   add_setshow_zinteger_cmd ("target", class_maintenance, &targetdebug, _("\
2781 Set target debugging."), _("\
2782 Show target debugging."), _("\
2783 When non-zero, target debugging is enabled.  Higher numbers are more\n\
2784 verbose.  Changes do not take effect until the next \"run\" or \"target\"\n\
2785 command."),
2786                             NULL,
2787                             show_targetdebug,
2788                             &setdebuglist, &showdebuglist);
2789
2790   add_setshow_boolean_cmd ("trust-readonly-sections", class_support,
2791                            &trust_readonly, _("\
2792 Set mode for reading from readonly sections."), _("\
2793 Show mode for reading from readonly sections."), _("\
2794 When this mode is on, memory reads from readonly sections (such as .text)\n\
2795 will be read from the object file instead of from the target.  This will\n\
2796 result in significant performance improvement for remote targets."),
2797                            NULL,
2798                            show_trust_readonly,
2799                            &setlist, &showlist);
2800
2801   add_com ("monitor", class_obscure, do_monitor_command,
2802            _("Send a command to the remote monitor (remote targets only)."));
2803
2804   add_cmd ("target-stack", class_maintenance, maintenance_print_target_stack,
2805            _("Print the name of each layer of the internal target stack."),
2806            &maintenanceprintlist);
2807
2808   target_dcache = dcache_init ();
2809 }