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