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