Add new infrun.h header.
[external/binutils.git] / gdb / target.c
1 /* Select target systems and architectures at runtime for GDB.
2
3    Copyright (C) 1990-2014 Free Software Foundation, Inc.
4
5    Contributed by Cygnus Support.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 #include "defs.h"
23 #include <errno.h>
24 #include <string.h>
25 #include "target.h"
26 #include "target-dcache.h"
27 #include "gdbcmd.h"
28 #include "symtab.h"
29 #include "inferior.h"
30 #include "infrun.h"
31 #include "bfd.h"
32 #include "symfile.h"
33 #include "objfiles.h"
34 #include "dcache.h"
35 #include <signal.h>
36 #include "regcache.h"
37 #include "gdb_assert.h"
38 #include "gdbcore.h"
39 #include "exceptions.h"
40 #include "target-descriptions.h"
41 #include "gdbthread.h"
42 #include "solib.h"
43 #include "exec.h"
44 #include "inline-frame.h"
45 #include "tracepoint.h"
46 #include "gdb/fileio.h"
47 #include "agent.h"
48 #include "auxv.h"
49
50 static void target_info (char *, int);
51
52 static void default_terminal_info (struct target_ops *, const char *, int);
53
54 static int default_watchpoint_addr_within_range (struct target_ops *,
55                                                  CORE_ADDR, CORE_ADDR, int);
56
57 static int default_region_ok_for_hw_watchpoint (struct target_ops *,
58                                                 CORE_ADDR, int);
59
60 static void default_rcmd (struct target_ops *, char *, struct ui_file *);
61
62 static ptid_t default_get_ada_task_ptid (struct target_ops *self,
63                                          long lwp, long tid);
64
65 static int default_follow_fork (struct target_ops *self, int follow_child,
66                                 int detach_fork);
67
68 static void default_mourn_inferior (struct target_ops *self);
69
70 static int default_search_memory (struct target_ops *ops,
71                                   CORE_ADDR start_addr,
72                                   ULONGEST search_space_len,
73                                   const gdb_byte *pattern,
74                                   ULONGEST pattern_len,
75                                   CORE_ADDR *found_addrp);
76
77 static int default_verify_memory (struct target_ops *self,
78                                   const gdb_byte *data,
79                                   CORE_ADDR memaddr, ULONGEST size);
80
81 static void tcomplain (void) ATTRIBUTE_NORETURN;
82
83 static int return_zero (struct target_ops *);
84
85 static int return_zero_has_execution (struct target_ops *, ptid_t);
86
87 static void target_command (char *, int);
88
89 static struct target_ops *find_default_run_target (char *);
90
91 static struct gdbarch *default_thread_architecture (struct target_ops *ops,
92                                                     ptid_t ptid);
93
94 static int dummy_find_memory_regions (struct target_ops *self,
95                                       find_memory_region_ftype ignore1,
96                                       void *ignore2);
97
98 static char *dummy_make_corefile_notes (struct target_ops *self,
99                                         bfd *ignore1, int *ignore2);
100
101 static char *default_pid_to_str (struct target_ops *ops, ptid_t ptid);
102
103 static enum exec_direction_kind default_execution_direction
104     (struct target_ops *self);
105
106 static CORE_ADDR default_target_decr_pc_after_break (struct target_ops *ops,
107                                                      struct gdbarch *gdbarch);
108
109 #include "target-delegates.c"
110
111 static void init_dummy_target (void);
112
113 static struct target_ops debug_target;
114
115 static void debug_to_open (char *, int);
116
117 static void debug_to_prepare_to_store (struct target_ops *self,
118                                        struct regcache *);
119
120 static void debug_to_files_info (struct target_ops *);
121
122 static int debug_to_insert_breakpoint (struct target_ops *, struct gdbarch *,
123                                        struct bp_target_info *);
124
125 static int debug_to_remove_breakpoint (struct target_ops *, struct gdbarch *,
126                                        struct bp_target_info *);
127
128 static int debug_to_can_use_hw_breakpoint (struct target_ops *self,
129                                            int, int, int);
130
131 static int debug_to_insert_hw_breakpoint (struct target_ops *self,
132                                           struct gdbarch *,
133                                           struct bp_target_info *);
134
135 static int debug_to_remove_hw_breakpoint (struct target_ops *self,
136                                           struct gdbarch *,
137                                           struct bp_target_info *);
138
139 static int debug_to_insert_watchpoint (struct target_ops *self,
140                                        CORE_ADDR, int, int,
141                                        struct expression *);
142
143 static int debug_to_remove_watchpoint (struct target_ops *self,
144                                        CORE_ADDR, int, int,
145                                        struct expression *);
146
147 static int debug_to_stopped_data_address (struct target_ops *, CORE_ADDR *);
148
149 static int debug_to_watchpoint_addr_within_range (struct target_ops *,
150                                                   CORE_ADDR, CORE_ADDR, int);
151
152 static int debug_to_region_ok_for_hw_watchpoint (struct target_ops *self,
153                                                  CORE_ADDR, int);
154
155 static int debug_to_can_accel_watchpoint_condition (struct target_ops *self,
156                                                     CORE_ADDR, int, int,
157                                                     struct expression *);
158
159 static void debug_to_terminal_init (struct target_ops *self);
160
161 static void debug_to_terminal_inferior (struct target_ops *self);
162
163 static void debug_to_terminal_ours_for_output (struct target_ops *self);
164
165 static void debug_to_terminal_save_ours (struct target_ops *self);
166
167 static void debug_to_terminal_ours (struct target_ops *self);
168
169 static void debug_to_load (struct target_ops *self, char *, int);
170
171 static int debug_to_can_run (struct target_ops *self);
172
173 static void debug_to_stop (struct target_ops *self, ptid_t);
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_allocsize;
181 #define DEFAULT_ALLOCSIZE       10
182
183 /* The initial current target, so that there is always a semi-valid
184    current target.  */
185
186 static struct target_ops dummy_target;
187
188 /* Top of target stack.  */
189
190 static struct target_ops *target_stack;
191
192 /* The target structure we are currently using to talk to a process
193    or file or whatever "inferior" we have.  */
194
195 struct target_ops current_target;
196
197 /* Command list for target.  */
198
199 static struct cmd_list_element *targetlist = NULL;
200
201 /* Nonzero if we should trust readonly sections from the
202    executable when reading memory.  */
203
204 static int trust_readonly = 0;
205
206 /* Nonzero if we should show true memory content including
207    memory breakpoint inserted by gdb.  */
208
209 static int show_memory_breakpoints = 0;
210
211 /* These globals control whether GDB attempts to perform these
212    operations; they are useful for targets that need to prevent
213    inadvertant disruption, such as in non-stop mode.  */
214
215 int may_write_registers = 1;
216
217 int may_write_memory = 1;
218
219 int may_insert_breakpoints = 1;
220
221 int may_insert_tracepoints = 1;
222
223 int may_insert_fast_tracepoints = 1;
224
225 int may_stop = 1;
226
227 /* Non-zero if we want to see trace of target level stuff.  */
228
229 static unsigned int targetdebug = 0;
230 static void
231 show_targetdebug (struct ui_file *file, int from_tty,
232                   struct cmd_list_element *c, const char *value)
233 {
234   fprintf_filtered (file, _("Target debugging is %s.\n"), value);
235 }
236
237 static void setup_target_debug (void);
238
239 /* The user just typed 'target' without the name of a target.  */
240
241 static void
242 target_command (char *arg, int from_tty)
243 {
244   fputs_filtered ("Argument required (target name).  Try `help target'\n",
245                   gdb_stdout);
246 }
247
248 /* Default target_has_* methods for process_stratum targets.  */
249
250 int
251 default_child_has_all_memory (struct target_ops *ops)
252 {
253   /* If no inferior selected, then we can't read memory here.  */
254   if (ptid_equal (inferior_ptid, null_ptid))
255     return 0;
256
257   return 1;
258 }
259
260 int
261 default_child_has_memory (struct target_ops *ops)
262 {
263   /* If no inferior selected, then we can't read memory here.  */
264   if (ptid_equal (inferior_ptid, null_ptid))
265     return 0;
266
267   return 1;
268 }
269
270 int
271 default_child_has_stack (struct target_ops *ops)
272 {
273   /* If no inferior selected, there's no stack.  */
274   if (ptid_equal (inferior_ptid, null_ptid))
275     return 0;
276
277   return 1;
278 }
279
280 int
281 default_child_has_registers (struct target_ops *ops)
282 {
283   /* Can't read registers from no inferior.  */
284   if (ptid_equal (inferior_ptid, null_ptid))
285     return 0;
286
287   return 1;
288 }
289
290 int
291 default_child_has_execution (struct target_ops *ops, ptid_t the_ptid)
292 {
293   /* If there's no thread selected, then we can't make it run through
294      hoops.  */
295   if (ptid_equal (the_ptid, null_ptid))
296     return 0;
297
298   return 1;
299 }
300
301
302 int
303 target_has_all_memory_1 (void)
304 {
305   struct target_ops *t;
306
307   for (t = current_target.beneath; t != NULL; t = t->beneath)
308     if (t->to_has_all_memory (t))
309       return 1;
310
311   return 0;
312 }
313
314 int
315 target_has_memory_1 (void)
316 {
317   struct target_ops *t;
318
319   for (t = current_target.beneath; t != NULL; t = t->beneath)
320     if (t->to_has_memory (t))
321       return 1;
322
323   return 0;
324 }
325
326 int
327 target_has_stack_1 (void)
328 {
329   struct target_ops *t;
330
331   for (t = current_target.beneath; t != NULL; t = t->beneath)
332     if (t->to_has_stack (t))
333       return 1;
334
335   return 0;
336 }
337
338 int
339 target_has_registers_1 (void)
340 {
341   struct target_ops *t;
342
343   for (t = current_target.beneath; t != NULL; t = t->beneath)
344     if (t->to_has_registers (t))
345       return 1;
346
347   return 0;
348 }
349
350 int
351 target_has_execution_1 (ptid_t the_ptid)
352 {
353   struct target_ops *t;
354
355   for (t = current_target.beneath; t != NULL; t = t->beneath)
356     if (t->to_has_execution (t, the_ptid))
357       return 1;
358
359   return 0;
360 }
361
362 int
363 target_has_execution_current (void)
364 {
365   return target_has_execution_1 (inferior_ptid);
366 }
367
368 /* Complete initialization of T.  This ensures that various fields in
369    T are set, if needed by the target implementation.  */
370
371 void
372 complete_target_initialization (struct target_ops *t)
373 {
374   /* Provide default values for all "must have" methods.  */
375
376   if (t->to_has_all_memory == NULL)
377     t->to_has_all_memory = return_zero;
378
379   if (t->to_has_memory == NULL)
380     t->to_has_memory = return_zero;
381
382   if (t->to_has_stack == NULL)
383     t->to_has_stack = return_zero;
384
385   if (t->to_has_registers == NULL)
386     t->to_has_registers = return_zero;
387
388   if (t->to_has_execution == NULL)
389     t->to_has_execution = return_zero_has_execution;
390
391   /* These methods can be called on an unpushed target and so require
392      a default implementation if the target might plausibly be the
393      default run target.  */
394   gdb_assert (t->to_can_run == NULL || (t->to_can_async_p != NULL
395                                         && t->to_supports_non_stop != NULL));
396
397   install_delegators (t);
398 }
399
400 /* Add possible target architecture T to the list and add a new
401    command 'target T->to_shortname'.  Set COMPLETER as the command's
402    completer if not NULL.  */
403
404 void
405 add_target_with_completer (struct target_ops *t,
406                            completer_ftype *completer)
407 {
408   struct cmd_list_element *c;
409
410   complete_target_initialization (t);
411
412   if (!target_structs)
413     {
414       target_struct_allocsize = DEFAULT_ALLOCSIZE;
415       target_structs = (struct target_ops **) xmalloc
416         (target_struct_allocsize * sizeof (*target_structs));
417     }
418   if (target_struct_size >= target_struct_allocsize)
419     {
420       target_struct_allocsize *= 2;
421       target_structs = (struct target_ops **)
422         xrealloc ((char *) target_structs,
423                   target_struct_allocsize * sizeof (*target_structs));
424     }
425   target_structs[target_struct_size++] = t;
426
427   if (targetlist == NULL)
428     add_prefix_cmd ("target", class_run, target_command, _("\
429 Connect to a target machine or process.\n\
430 The first argument is the type or protocol of the target machine.\n\
431 Remaining arguments are interpreted by the target protocol.  For more\n\
432 information on the arguments for a particular protocol, type\n\
433 `help target ' followed by the protocol name."),
434                     &targetlist, "target ", 0, &cmdlist);
435   c = add_cmd (t->to_shortname, no_class, t->to_open, t->to_doc,
436                &targetlist);
437   if (completer != NULL)
438     set_cmd_completer (c, completer);
439 }
440
441 /* Add a possible target architecture to the list.  */
442
443 void
444 add_target (struct target_ops *t)
445 {
446   add_target_with_completer (t, NULL);
447 }
448
449 /* See target.h.  */
450
451 void
452 add_deprecated_target_alias (struct target_ops *t, char *alias)
453 {
454   struct cmd_list_element *c;
455   char *alt;
456
457   /* If we use add_alias_cmd, here, we do not get the deprecated warning,
458      see PR cli/15104.  */
459   c = add_cmd (alias, no_class, t->to_open, t->to_doc, &targetlist);
460   alt = xstrprintf ("target %s", t->to_shortname);
461   deprecate_cmd (c, alt);
462 }
463
464 /* Stub functions */
465
466 void
467 target_kill (void)
468 {
469   if (targetdebug)
470     fprintf_unfiltered (gdb_stdlog, "target_kill ()\n");
471
472   current_target.to_kill (&current_target);
473 }
474
475 void
476 target_load (char *arg, int from_tty)
477 {
478   target_dcache_invalidate ();
479   (*current_target.to_load) (&current_target, arg, from_tty);
480 }
481
482 void
483 target_terminal_inferior (void)
484 {
485   /* A background resume (``run&'') should leave GDB in control of the
486      terminal.  Use target_can_async_p, not target_is_async_p, since at
487      this point the target is not async yet.  However, if sync_execution
488      is not set, we know it will become async prior to resume.  */
489   if (target_can_async_p () && !sync_execution)
490     return;
491
492   /* If GDB is resuming the inferior in the foreground, install
493      inferior's terminal modes.  */
494   (*current_target.to_terminal_inferior) (&current_target);
495 }
496
497 static void
498 tcomplain (void)
499 {
500   error (_("You can't do that when your target is `%s'"),
501          current_target.to_shortname);
502 }
503
504 void
505 noprocess (void)
506 {
507   error (_("You can't do that without a process to debug."));
508 }
509
510 static void
511 default_terminal_info (struct target_ops *self, const char *args, int from_tty)
512 {
513   printf_unfiltered (_("No saved terminal information.\n"));
514 }
515
516 /* A default implementation for the to_get_ada_task_ptid target method.
517
518    This function builds the PTID by using both LWP and TID as part of
519    the PTID lwp and tid elements.  The pid used is the pid of the
520    inferior_ptid.  */
521
522 static ptid_t
523 default_get_ada_task_ptid (struct target_ops *self, long lwp, long tid)
524 {
525   return ptid_build (ptid_get_pid (inferior_ptid), lwp, tid);
526 }
527
528 static enum exec_direction_kind
529 default_execution_direction (struct target_ops *self)
530 {
531   if (!target_can_execute_reverse)
532     return EXEC_FORWARD;
533   else if (!target_can_async_p ())
534     return EXEC_FORWARD;
535   else
536     gdb_assert_not_reached ("\
537 to_execution_direction must be implemented for reverse async");
538 }
539
540 /* Go through the target stack from top to bottom, copying over zero
541    entries in current_target, then filling in still empty entries.  In
542    effect, we are doing class inheritance through the pushed target
543    vectors.
544
545    NOTE: cagney/2003-10-17: The problem with this inheritance, as it
546    is currently implemented, is that it discards any knowledge of
547    which target an inherited method originally belonged to.
548    Consequently, new new target methods should instead explicitly and
549    locally search the target stack for the target that can handle the
550    request.  */
551
552 static void
553 update_current_target (void)
554 {
555   struct target_ops *t;
556
557   /* First, reset current's contents.  */
558   memset (&current_target, 0, sizeof (current_target));
559
560   /* Install the delegators.  */
561   install_delegators (&current_target);
562
563   current_target.to_stratum = target_stack->to_stratum;
564
565 #define INHERIT(FIELD, TARGET) \
566       if (!current_target.FIELD) \
567         current_target.FIELD = (TARGET)->FIELD
568
569   /* Do not add any new INHERITs here.  Instead, use the delegation
570      mechanism provided by make-target-delegates.  */
571   for (t = target_stack; t; t = t->beneath)
572     {
573       INHERIT (to_shortname, t);
574       INHERIT (to_longname, t);
575       INHERIT (to_attach_no_wait, t);
576       INHERIT (to_have_steppable_watchpoint, t);
577       INHERIT (to_have_continuable_watchpoint, t);
578       INHERIT (to_has_thread_control, t);
579     }
580 #undef INHERIT
581
582   /* Finally, position the target-stack beneath the squashed
583      "current_target".  That way code looking for a non-inherited
584      target method can quickly and simply find it.  */
585   current_target.beneath = target_stack;
586
587   if (targetdebug)
588     setup_target_debug ();
589 }
590
591 /* Push a new target type into the stack of the existing target accessors,
592    possibly superseding some of the existing accessors.
593
594    Rather than allow an empty stack, we always have the dummy target at
595    the bottom stratum, so we can call the function vectors without
596    checking them.  */
597
598 void
599 push_target (struct target_ops *t)
600 {
601   struct target_ops **cur;
602
603   /* Check magic number.  If wrong, it probably means someone changed
604      the struct definition, but not all the places that initialize one.  */
605   if (t->to_magic != OPS_MAGIC)
606     {
607       fprintf_unfiltered (gdb_stderr,
608                           "Magic number of %s target struct wrong\n",
609                           t->to_shortname);
610       internal_error (__FILE__, __LINE__,
611                       _("failed internal consistency check"));
612     }
613
614   /* Find the proper stratum to install this target in.  */
615   for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
616     {
617       if ((int) (t->to_stratum) >= (int) (*cur)->to_stratum)
618         break;
619     }
620
621   /* If there's already targets at this stratum, remove them.  */
622   /* FIXME: cagney/2003-10-15: I think this should be popping all
623      targets to CUR, and not just those at this stratum level.  */
624   while ((*cur) != NULL && t->to_stratum == (*cur)->to_stratum)
625     {
626       /* There's already something at this stratum level.  Close it,
627          and un-hook it from the stack.  */
628       struct target_ops *tmp = (*cur);
629
630       (*cur) = (*cur)->beneath;
631       tmp->beneath = NULL;
632       target_close (tmp);
633     }
634
635   /* We have removed all targets in our stratum, now add the new one.  */
636   t->beneath = (*cur);
637   (*cur) = t;
638
639   update_current_target ();
640 }
641
642 /* Remove a target_ops vector from the stack, wherever it may be.
643    Return how many times it was removed (0 or 1).  */
644
645 int
646 unpush_target (struct target_ops *t)
647 {
648   struct target_ops **cur;
649   struct target_ops *tmp;
650
651   if (t->to_stratum == dummy_stratum)
652     internal_error (__FILE__, __LINE__,
653                     _("Attempt to unpush the dummy target"));
654
655   /* Look for the specified target.  Note that we assume that a target
656      can only occur once in the target stack.  */
657
658   for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
659     {
660       if ((*cur) == t)
661         break;
662     }
663
664   /* If we don't find target_ops, quit.  Only open targets should be
665      closed.  */
666   if ((*cur) == NULL)
667     return 0;                   
668
669   /* Unchain the target.  */
670   tmp = (*cur);
671   (*cur) = (*cur)->beneath;
672   tmp->beneath = NULL;
673
674   update_current_target ();
675
676   /* Finally close the target.  Note we do this after unchaining, so
677      any target method calls from within the target_close
678      implementation don't end up in T anymore.  */
679   target_close (t);
680
681   return 1;
682 }
683
684 void
685 pop_all_targets_above (enum strata above_stratum)
686 {
687   while ((int) (current_target.to_stratum) > (int) above_stratum)
688     {
689       if (!unpush_target (target_stack))
690         {
691           fprintf_unfiltered (gdb_stderr,
692                               "pop_all_targets couldn't find target %s\n",
693                               target_stack->to_shortname);
694           internal_error (__FILE__, __LINE__,
695                           _("failed internal consistency check"));
696           break;
697         }
698     }
699 }
700
701 void
702 pop_all_targets (void)
703 {
704   pop_all_targets_above (dummy_stratum);
705 }
706
707 /* Return 1 if T is now pushed in the target stack.  Return 0 otherwise.  */
708
709 int
710 target_is_pushed (struct target_ops *t)
711 {
712   struct target_ops **cur;
713
714   /* Check magic number.  If wrong, it probably means someone changed
715      the struct definition, but not all the places that initialize one.  */
716   if (t->to_magic != OPS_MAGIC)
717     {
718       fprintf_unfiltered (gdb_stderr,
719                           "Magic number of %s target struct wrong\n",
720                           t->to_shortname);
721       internal_error (__FILE__, __LINE__,
722                       _("failed internal consistency check"));
723     }
724
725   for (cur = &target_stack; (*cur) != NULL; cur = &(*cur)->beneath)
726     if (*cur == t)
727       return 1;
728
729   return 0;
730 }
731
732 /* Using the objfile specified in OBJFILE, find the address for the
733    current thread's thread-local storage with offset OFFSET.  */
734 CORE_ADDR
735 target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset)
736 {
737   volatile CORE_ADDR addr = 0;
738   struct target_ops *target;
739
740   for (target = current_target.beneath;
741        target != NULL;
742        target = target->beneath)
743     {
744       if (target->to_get_thread_local_address != NULL)
745         break;
746     }
747
748   if (target != NULL
749       && gdbarch_fetch_tls_load_module_address_p (target_gdbarch ()))
750     {
751       ptid_t ptid = inferior_ptid;
752       volatile struct gdb_exception ex;
753
754       TRY_CATCH (ex, RETURN_MASK_ALL)
755         {
756           CORE_ADDR lm_addr;
757           
758           /* Fetch the load module address for this objfile.  */
759           lm_addr = gdbarch_fetch_tls_load_module_address (target_gdbarch (),
760                                                            objfile);
761
762           addr = target->to_get_thread_local_address (target, ptid,
763                                                       lm_addr, offset);
764         }
765       /* If an error occurred, print TLS related messages here.  Otherwise,
766          throw the error to some higher catcher.  */
767       if (ex.reason < 0)
768         {
769           int objfile_is_library = (objfile->flags & OBJF_SHARED);
770
771           switch (ex.error)
772             {
773             case TLS_NO_LIBRARY_SUPPORT_ERROR:
774               error (_("Cannot find thread-local variables "
775                        "in this thread library."));
776               break;
777             case TLS_LOAD_MODULE_NOT_FOUND_ERROR:
778               if (objfile_is_library)
779                 error (_("Cannot find shared library `%s' in dynamic"
780                          " linker's load module list"), objfile_name (objfile));
781               else
782                 error (_("Cannot find executable file `%s' in dynamic"
783                          " linker's load module list"), objfile_name (objfile));
784               break;
785             case TLS_NOT_ALLOCATED_YET_ERROR:
786               if (objfile_is_library)
787                 error (_("The inferior has not yet allocated storage for"
788                          " thread-local variables in\n"
789                          "the shared library `%s'\n"
790                          "for %s"),
791                        objfile_name (objfile), target_pid_to_str (ptid));
792               else
793                 error (_("The inferior has not yet allocated storage for"
794                          " thread-local variables in\n"
795                          "the executable `%s'\n"
796                          "for %s"),
797                        objfile_name (objfile), target_pid_to_str (ptid));
798               break;
799             case TLS_GENERIC_ERROR:
800               if (objfile_is_library)
801                 error (_("Cannot find thread-local storage for %s, "
802                          "shared library %s:\n%s"),
803                        target_pid_to_str (ptid),
804                        objfile_name (objfile), ex.message);
805               else
806                 error (_("Cannot find thread-local storage for %s, "
807                          "executable file %s:\n%s"),
808                        target_pid_to_str (ptid),
809                        objfile_name (objfile), ex.message);
810               break;
811             default:
812               throw_exception (ex);
813               break;
814             }
815         }
816     }
817   /* It wouldn't be wrong here to try a gdbarch method, too; finding
818      TLS is an ABI-specific thing.  But we don't do that yet.  */
819   else
820     error (_("Cannot find thread-local variables on this target"));
821
822   return addr;
823 }
824
825 const char *
826 target_xfer_status_to_string (enum target_xfer_status status)
827 {
828 #define CASE(X) case X: return #X
829   switch (status)
830     {
831       CASE(TARGET_XFER_E_IO);
832       CASE(TARGET_XFER_UNAVAILABLE);
833     default:
834       return "<unknown>";
835     }
836 #undef CASE
837 };
838
839
840 #undef  MIN
841 #define MIN(A, B) (((A) <= (B)) ? (A) : (B))
842
843 /* target_read_string -- read a null terminated string, up to LEN bytes,
844    from MEMADDR in target.  Set *ERRNOP to the errno code, or 0 if successful.
845    Set *STRING to a pointer to malloc'd memory containing the data; the caller
846    is responsible for freeing it.  Return the number of bytes successfully
847    read.  */
848
849 int
850 target_read_string (CORE_ADDR memaddr, char **string, int len, int *errnop)
851 {
852   int tlen, offset, i;
853   gdb_byte buf[4];
854   int errcode = 0;
855   char *buffer;
856   int buffer_allocated;
857   char *bufptr;
858   unsigned int nbytes_read = 0;
859
860   gdb_assert (string);
861
862   /* Small for testing.  */
863   buffer_allocated = 4;
864   buffer = xmalloc (buffer_allocated);
865   bufptr = buffer;
866
867   while (len > 0)
868     {
869       tlen = MIN (len, 4 - (memaddr & 3));
870       offset = memaddr & 3;
871
872       errcode = target_read_memory (memaddr & ~3, buf, sizeof buf);
873       if (errcode != 0)
874         {
875           /* The transfer request might have crossed the boundary to an
876              unallocated region of memory.  Retry the transfer, requesting
877              a single byte.  */
878           tlen = 1;
879           offset = 0;
880           errcode = target_read_memory (memaddr, buf, 1);
881           if (errcode != 0)
882             goto done;
883         }
884
885       if (bufptr - buffer + tlen > buffer_allocated)
886         {
887           unsigned int bytes;
888
889           bytes = bufptr - buffer;
890           buffer_allocated *= 2;
891           buffer = xrealloc (buffer, buffer_allocated);
892           bufptr = buffer + bytes;
893         }
894
895       for (i = 0; i < tlen; i++)
896         {
897           *bufptr++ = buf[i + offset];
898           if (buf[i + offset] == '\000')
899             {
900               nbytes_read += i + 1;
901               goto done;
902             }
903         }
904
905       memaddr += tlen;
906       len -= tlen;
907       nbytes_read += tlen;
908     }
909 done:
910   *string = buffer;
911   if (errnop != NULL)
912     *errnop = errcode;
913   return nbytes_read;
914 }
915
916 struct target_section_table *
917 target_get_section_table (struct target_ops *target)
918 {
919   if (targetdebug)
920     fprintf_unfiltered (gdb_stdlog, "target_get_section_table ()\n");
921
922   return (*target->to_get_section_table) (target);
923 }
924
925 /* Find a section containing ADDR.  */
926
927 struct target_section *
928 target_section_by_addr (struct target_ops *target, CORE_ADDR addr)
929 {
930   struct target_section_table *table = target_get_section_table (target);
931   struct target_section *secp;
932
933   if (table == NULL)
934     return NULL;
935
936   for (secp = table->sections; secp < table->sections_end; secp++)
937     {
938       if (addr >= secp->addr && addr < secp->endaddr)
939         return secp;
940     }
941   return NULL;
942 }
943
944 /* Read memory from more than one valid target.  A core file, for
945    instance, could have some of memory but delegate other bits to
946    the target below it.  So, we must manually try all targets.  */
947
948 static enum target_xfer_status
949 raw_memory_xfer_partial (struct target_ops *ops, gdb_byte *readbuf,
950                          const gdb_byte *writebuf, ULONGEST memaddr, LONGEST len,
951                          ULONGEST *xfered_len)
952 {
953   enum target_xfer_status res;
954
955   do
956     {
957       res = ops->to_xfer_partial (ops, TARGET_OBJECT_MEMORY, NULL,
958                                   readbuf, writebuf, memaddr, len,
959                                   xfered_len);
960       if (res == TARGET_XFER_OK)
961         break;
962
963       /* Stop if the target reports that the memory is not available.  */
964       if (res == TARGET_XFER_UNAVAILABLE)
965         break;
966
967       /* We want to continue past core files to executables, but not
968          past a running target's memory.  */
969       if (ops->to_has_all_memory (ops))
970         break;
971
972       ops = ops->beneath;
973     }
974   while (ops != NULL);
975
976   /* The cache works at the raw memory level.  Make sure the cache
977      gets updated with raw contents no matter what kind of memory
978      object was originally being written.  Note we do write-through
979      first, so that if it fails, we don't write to the cache contents
980      that never made it to the target.  */
981   if (writebuf != NULL
982       && !ptid_equal (inferior_ptid, null_ptid)
983       && target_dcache_init_p ()
984       && (stack_cache_enabled_p () || code_cache_enabled_p ()))
985     {
986       DCACHE *dcache = target_dcache_get ();
987
988       /* Note that writing to an area of memory which wasn't present
989          in the cache doesn't cause it to be loaded in.  */
990       dcache_update (dcache, res, memaddr, writebuf, *xfered_len);
991     }
992
993   return res;
994 }
995
996 /* Perform a partial memory transfer.
997    For docs see target.h, to_xfer_partial.  */
998
999 static enum target_xfer_status
1000 memory_xfer_partial_1 (struct target_ops *ops, enum target_object object,
1001                        gdb_byte *readbuf, const gdb_byte *writebuf, ULONGEST memaddr,
1002                        ULONGEST len, ULONGEST *xfered_len)
1003 {
1004   enum target_xfer_status res;
1005   int reg_len;
1006   struct mem_region *region;
1007   struct inferior *inf;
1008
1009   /* For accesses to unmapped overlay sections, read directly from
1010      files.  Must do this first, as MEMADDR may need adjustment.  */
1011   if (readbuf != NULL && overlay_debugging)
1012     {
1013       struct obj_section *section = find_pc_overlay (memaddr);
1014
1015       if (pc_in_unmapped_range (memaddr, section))
1016         {
1017           struct target_section_table *table
1018             = target_get_section_table (ops);
1019           const char *section_name = section->the_bfd_section->name;
1020
1021           memaddr = overlay_mapped_address (memaddr, section);
1022           return section_table_xfer_memory_partial (readbuf, writebuf,
1023                                                     memaddr, len, xfered_len,
1024                                                     table->sections,
1025                                                     table->sections_end,
1026                                                     section_name);
1027         }
1028     }
1029
1030   /* Try the executable files, if "trust-readonly-sections" is set.  */
1031   if (readbuf != NULL && trust_readonly)
1032     {
1033       struct target_section *secp;
1034       struct target_section_table *table;
1035
1036       secp = target_section_by_addr (ops, memaddr);
1037       if (secp != NULL
1038           && (bfd_get_section_flags (secp->the_bfd_section->owner,
1039                                      secp->the_bfd_section)
1040               & SEC_READONLY))
1041         {
1042           table = target_get_section_table (ops);
1043           return section_table_xfer_memory_partial (readbuf, writebuf,
1044                                                     memaddr, len, xfered_len,
1045                                                     table->sections,
1046                                                     table->sections_end,
1047                                                     NULL);
1048         }
1049     }
1050
1051   /* Try GDB's internal data cache.  */
1052   region = lookup_mem_region (memaddr);
1053   /* region->hi == 0 means there's no upper bound.  */
1054   if (memaddr + len < region->hi || region->hi == 0)
1055     reg_len = len;
1056   else
1057     reg_len = region->hi - memaddr;
1058
1059   switch (region->attrib.mode)
1060     {
1061     case MEM_RO:
1062       if (writebuf != NULL)
1063         return TARGET_XFER_E_IO;
1064       break;
1065
1066     case MEM_WO:
1067       if (readbuf != NULL)
1068         return TARGET_XFER_E_IO;
1069       break;
1070
1071     case MEM_FLASH:
1072       /* We only support writing to flash during "load" for now.  */
1073       if (writebuf != NULL)
1074         error (_("Writing to flash memory forbidden in this context"));
1075       break;
1076
1077     case MEM_NONE:
1078       return TARGET_XFER_E_IO;
1079     }
1080
1081   if (!ptid_equal (inferior_ptid, null_ptid))
1082     inf = find_inferior_pid (ptid_get_pid (inferior_ptid));
1083   else
1084     inf = NULL;
1085
1086   if (inf != NULL
1087       && readbuf != NULL
1088       /* The dcache reads whole cache lines; that doesn't play well
1089          with reading from a trace buffer, because reading outside of
1090          the collected memory range fails.  */
1091       && get_traceframe_number () == -1
1092       && (region->attrib.cache
1093           || (stack_cache_enabled_p () && object == TARGET_OBJECT_STACK_MEMORY)
1094           || (code_cache_enabled_p () && object == TARGET_OBJECT_CODE_MEMORY)))
1095     {
1096       DCACHE *dcache = target_dcache_get_or_init ();
1097
1098       return dcache_read_memory_partial (ops, dcache, memaddr, readbuf,
1099                                          reg_len, xfered_len);
1100     }
1101
1102   /* If none of those methods found the memory we wanted, fall back
1103      to a target partial transfer.  Normally a single call to
1104      to_xfer_partial is enough; if it doesn't recognize an object
1105      it will call the to_xfer_partial of the next target down.
1106      But for memory this won't do.  Memory is the only target
1107      object which can be read from more than one valid target.
1108      A core file, for instance, could have some of memory but
1109      delegate other bits to the target below it.  So, we must
1110      manually try all targets.  */
1111
1112   res = raw_memory_xfer_partial (ops, readbuf, writebuf, memaddr, reg_len,
1113                                  xfered_len);
1114
1115   /* If we still haven't got anything, return the last error.  We
1116      give up.  */
1117   return res;
1118 }
1119
1120 /* Perform a partial memory transfer.  For docs see target.h,
1121    to_xfer_partial.  */
1122
1123 static enum target_xfer_status
1124 memory_xfer_partial (struct target_ops *ops, enum target_object object,
1125                      gdb_byte *readbuf, const gdb_byte *writebuf,
1126                      ULONGEST memaddr, ULONGEST len, ULONGEST *xfered_len)
1127 {
1128   enum target_xfer_status res;
1129
1130   /* Zero length requests are ok and require no work.  */
1131   if (len == 0)
1132     return TARGET_XFER_EOF;
1133
1134   /* Fill in READBUF with breakpoint shadows, or WRITEBUF with
1135      breakpoint insns, thus hiding out from higher layers whether
1136      there are software breakpoints inserted in the code stream.  */
1137   if (readbuf != NULL)
1138     {
1139       res = memory_xfer_partial_1 (ops, object, readbuf, NULL, memaddr, len,
1140                                    xfered_len);
1141
1142       if (res == TARGET_XFER_OK && !show_memory_breakpoints)
1143         breakpoint_xfer_memory (readbuf, NULL, NULL, memaddr, *xfered_len);
1144     }
1145   else
1146     {
1147       void *buf;
1148       struct cleanup *old_chain;
1149
1150       /* A large write request is likely to be partially satisfied
1151          by memory_xfer_partial_1.  We will continually malloc
1152          and free a copy of the entire write request for breakpoint
1153          shadow handling even though we only end up writing a small
1154          subset of it.  Cap writes to 4KB to mitigate this.  */
1155       len = min (4096, len);
1156
1157       buf = xmalloc (len);
1158       old_chain = make_cleanup (xfree, buf);
1159       memcpy (buf, writebuf, len);
1160
1161       breakpoint_xfer_memory (NULL, buf, writebuf, memaddr, len);
1162       res = memory_xfer_partial_1 (ops, object, NULL, buf, memaddr, len,
1163                                    xfered_len);
1164
1165       do_cleanups (old_chain);
1166     }
1167
1168   return res;
1169 }
1170
1171 static void
1172 restore_show_memory_breakpoints (void *arg)
1173 {
1174   show_memory_breakpoints = (uintptr_t) arg;
1175 }
1176
1177 struct cleanup *
1178 make_show_memory_breakpoints_cleanup (int show)
1179 {
1180   int current = show_memory_breakpoints;
1181
1182   show_memory_breakpoints = show;
1183   return make_cleanup (restore_show_memory_breakpoints,
1184                        (void *) (uintptr_t) current);
1185 }
1186
1187 /* For docs see target.h, to_xfer_partial.  */
1188
1189 enum target_xfer_status
1190 target_xfer_partial (struct target_ops *ops,
1191                      enum target_object object, const char *annex,
1192                      gdb_byte *readbuf, const gdb_byte *writebuf,
1193                      ULONGEST offset, ULONGEST len,
1194                      ULONGEST *xfered_len)
1195 {
1196   enum target_xfer_status retval;
1197
1198   gdb_assert (ops->to_xfer_partial != NULL);
1199
1200   /* Transfer is done when LEN is zero.  */
1201   if (len == 0)
1202     return TARGET_XFER_EOF;
1203
1204   if (writebuf && !may_write_memory)
1205     error (_("Writing to memory is not allowed (addr %s, len %s)"),
1206            core_addr_to_string_nz (offset), plongest (len));
1207
1208   *xfered_len = 0;
1209
1210   /* If this is a memory transfer, let the memory-specific code
1211      have a look at it instead.  Memory transfers are more
1212      complicated.  */
1213   if (object == TARGET_OBJECT_MEMORY || object == TARGET_OBJECT_STACK_MEMORY
1214       || object == TARGET_OBJECT_CODE_MEMORY)
1215     retval = memory_xfer_partial (ops, object, readbuf,
1216                                   writebuf, offset, len, xfered_len);
1217   else if (object == TARGET_OBJECT_RAW_MEMORY)
1218     {
1219       /* Request the normal memory object from other layers.  */
1220       retval = raw_memory_xfer_partial (ops, readbuf, writebuf, offset, len,
1221                                         xfered_len);
1222     }
1223   else
1224     retval = ops->to_xfer_partial (ops, object, annex, readbuf,
1225                                    writebuf, offset, len, xfered_len);
1226
1227   if (targetdebug)
1228     {
1229       const unsigned char *myaddr = NULL;
1230
1231       fprintf_unfiltered (gdb_stdlog,
1232                           "%s:target_xfer_partial "
1233                           "(%d, %s, %s, %s, %s, %s) = %d, %s",
1234                           ops->to_shortname,
1235                           (int) object,
1236                           (annex ? annex : "(null)"),
1237                           host_address_to_string (readbuf),
1238                           host_address_to_string (writebuf),
1239                           core_addr_to_string_nz (offset),
1240                           pulongest (len), retval,
1241                           pulongest (*xfered_len));
1242
1243       if (readbuf)
1244         myaddr = readbuf;
1245       if (writebuf)
1246         myaddr = writebuf;
1247       if (retval == TARGET_XFER_OK && myaddr != NULL)
1248         {
1249           int i;
1250
1251           fputs_unfiltered (", bytes =", gdb_stdlog);
1252           for (i = 0; i < *xfered_len; i++)
1253             {
1254               if ((((intptr_t) &(myaddr[i])) & 0xf) == 0)
1255                 {
1256                   if (targetdebug < 2 && i > 0)
1257                     {
1258                       fprintf_unfiltered (gdb_stdlog, " ...");
1259                       break;
1260                     }
1261                   fprintf_unfiltered (gdb_stdlog, "\n");
1262                 }
1263
1264               fprintf_unfiltered (gdb_stdlog, " %02x", myaddr[i] & 0xff);
1265             }
1266         }
1267
1268       fputc_unfiltered ('\n', gdb_stdlog);
1269     }
1270
1271   /* Check implementations of to_xfer_partial update *XFERED_LEN
1272      properly.  Do assertion after printing debug messages, so that we
1273      can find more clues on assertion failure from debugging messages.  */
1274   if (retval == TARGET_XFER_OK || retval == TARGET_XFER_UNAVAILABLE)
1275     gdb_assert (*xfered_len > 0);
1276
1277   return retval;
1278 }
1279
1280 /* Read LEN bytes of target memory at address MEMADDR, placing the
1281    results in GDB's memory at MYADDR.  Returns either 0 for success or
1282    TARGET_XFER_E_IO if any error occurs.
1283
1284    If an error occurs, no guarantee is made about the contents of the data at
1285    MYADDR.  In particular, the caller should not depend upon partial reads
1286    filling the buffer with good data.  There is no way for the caller to know
1287    how much good data might have been transfered anyway.  Callers that can
1288    deal with partial reads should call target_read (which will retry until
1289    it makes no progress, and then return how much was transferred).  */
1290
1291 int
1292 target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
1293 {
1294   /* Dispatch to the topmost target, not the flattened current_target.
1295      Memory accesses check target->to_has_(all_)memory, and the
1296      flattened target doesn't inherit those.  */
1297   if (target_read (current_target.beneath, TARGET_OBJECT_MEMORY, NULL,
1298                    myaddr, memaddr, len) == len)
1299     return 0;
1300   else
1301     return TARGET_XFER_E_IO;
1302 }
1303
1304 /* Like target_read_memory, but specify explicitly that this is a read
1305    from the target's raw memory.  That is, this read bypasses the
1306    dcache, breakpoint shadowing, etc.  */
1307
1308 int
1309 target_read_raw_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
1310 {
1311   /* See comment in target_read_memory about why the request starts at
1312      current_target.beneath.  */
1313   if (target_read (current_target.beneath, TARGET_OBJECT_RAW_MEMORY, NULL,
1314                    myaddr, memaddr, len) == len)
1315     return 0;
1316   else
1317     return TARGET_XFER_E_IO;
1318 }
1319
1320 /* Like target_read_memory, but specify explicitly that this is a read from
1321    the target's stack.  This may trigger different cache behavior.  */
1322
1323 int
1324 target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
1325 {
1326   /* See comment in target_read_memory about why the request starts at
1327      current_target.beneath.  */
1328   if (target_read (current_target.beneath, TARGET_OBJECT_STACK_MEMORY, NULL,
1329                    myaddr, memaddr, len) == len)
1330     return 0;
1331   else
1332     return TARGET_XFER_E_IO;
1333 }
1334
1335 /* Like target_read_memory, but specify explicitly that this is a read from
1336    the target's code.  This may trigger different cache behavior.  */
1337
1338 int
1339 target_read_code (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
1340 {
1341   /* See comment in target_read_memory about why the request starts at
1342      current_target.beneath.  */
1343   if (target_read (current_target.beneath, TARGET_OBJECT_CODE_MEMORY, NULL,
1344                    myaddr, memaddr, len) == len)
1345     return 0;
1346   else
1347     return TARGET_XFER_E_IO;
1348 }
1349
1350 /* Write LEN bytes from MYADDR to target memory at address MEMADDR.
1351    Returns either 0 for success or TARGET_XFER_E_IO if any
1352    error occurs.  If an error occurs, no guarantee is made about how
1353    much data got written.  Callers that can deal with partial writes
1354    should call target_write.  */
1355
1356 int
1357 target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len)
1358 {
1359   /* See comment in target_read_memory about why the request starts at
1360      current_target.beneath.  */
1361   if (target_write (current_target.beneath, TARGET_OBJECT_MEMORY, NULL,
1362                     myaddr, memaddr, len) == len)
1363     return 0;
1364   else
1365     return TARGET_XFER_E_IO;
1366 }
1367
1368 /* Write LEN bytes from MYADDR to target raw memory at address
1369    MEMADDR.  Returns either 0 for success or TARGET_XFER_E_IO
1370    if any error occurs.  If an error occurs, no guarantee is made
1371    about how much data got written.  Callers that can deal with
1372    partial writes should call target_write.  */
1373
1374 int
1375 target_write_raw_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len)
1376 {
1377   /* See comment in target_read_memory about why the request starts at
1378      current_target.beneath.  */
1379   if (target_write (current_target.beneath, TARGET_OBJECT_RAW_MEMORY, NULL,
1380                     myaddr, memaddr, len) == len)
1381     return 0;
1382   else
1383     return TARGET_XFER_E_IO;
1384 }
1385
1386 /* Fetch the target's memory map.  */
1387
1388 VEC(mem_region_s) *
1389 target_memory_map (void)
1390 {
1391   VEC(mem_region_s) *result;
1392   struct mem_region *last_one, *this_one;
1393   int ix;
1394   struct target_ops *t;
1395
1396   if (targetdebug)
1397     fprintf_unfiltered (gdb_stdlog, "target_memory_map ()\n");
1398
1399   result = current_target.to_memory_map (&current_target);
1400   if (result == NULL)
1401     return NULL;
1402
1403   qsort (VEC_address (mem_region_s, result),
1404          VEC_length (mem_region_s, result),
1405          sizeof (struct mem_region), mem_region_cmp);
1406
1407   /* Check that regions do not overlap.  Simultaneously assign
1408      a numbering for the "mem" commands to use to refer to
1409      each region.  */
1410   last_one = NULL;
1411   for (ix = 0; VEC_iterate (mem_region_s, result, ix, this_one); ix++)
1412     {
1413       this_one->number = ix;
1414
1415       if (last_one && last_one->hi > this_one->lo)
1416         {
1417           warning (_("Overlapping regions in memory map: ignoring"));
1418           VEC_free (mem_region_s, result);
1419           return NULL;
1420         }
1421       last_one = this_one;
1422     }
1423
1424   return result;
1425 }
1426
1427 void
1428 target_flash_erase (ULONGEST address, LONGEST length)
1429 {
1430   if (targetdebug)
1431     fprintf_unfiltered (gdb_stdlog, "target_flash_erase (%s, %s)\n",
1432                         hex_string (address), phex (length, 0));
1433   current_target.to_flash_erase (&current_target, address, length);
1434 }
1435
1436 void
1437 target_flash_done (void)
1438 {
1439   if (targetdebug)
1440     fprintf_unfiltered (gdb_stdlog, "target_flash_done\n");
1441   current_target.to_flash_done (&current_target);
1442 }
1443
1444 static void
1445 show_trust_readonly (struct ui_file *file, int from_tty,
1446                      struct cmd_list_element *c, const char *value)
1447 {
1448   fprintf_filtered (file,
1449                     _("Mode for reading from readonly sections is %s.\n"),
1450                     value);
1451 }
1452
1453 /* Target vector read/write partial wrapper functions.  */
1454
1455 static enum target_xfer_status
1456 target_read_partial (struct target_ops *ops,
1457                      enum target_object object,
1458                      const char *annex, gdb_byte *buf,
1459                      ULONGEST offset, ULONGEST len,
1460                      ULONGEST *xfered_len)
1461 {
1462   return target_xfer_partial (ops, object, annex, buf, NULL, offset, len,
1463                               xfered_len);
1464 }
1465
1466 static enum target_xfer_status
1467 target_write_partial (struct target_ops *ops,
1468                       enum target_object object,
1469                       const char *annex, const gdb_byte *buf,
1470                       ULONGEST offset, LONGEST len, ULONGEST *xfered_len)
1471 {
1472   return target_xfer_partial (ops, object, annex, NULL, buf, offset, len,
1473                               xfered_len);
1474 }
1475
1476 /* Wrappers to perform the full transfer.  */
1477
1478 /* For docs on target_read see target.h.  */
1479
1480 LONGEST
1481 target_read (struct target_ops *ops,
1482              enum target_object object,
1483              const char *annex, gdb_byte *buf,
1484              ULONGEST offset, LONGEST len)
1485 {
1486   LONGEST xfered = 0;
1487
1488   while (xfered < len)
1489     {
1490       ULONGEST xfered_len;
1491       enum target_xfer_status status;
1492
1493       status = target_read_partial (ops, object, annex,
1494                                     (gdb_byte *) buf + xfered,
1495                                     offset + xfered, len - xfered,
1496                                     &xfered_len);
1497
1498       /* Call an observer, notifying them of the xfer progress?  */
1499       if (status == TARGET_XFER_EOF)
1500         return xfered;
1501       else if (status == TARGET_XFER_OK)
1502         {
1503           xfered += xfered_len;
1504           QUIT;
1505         }
1506       else
1507         return -1;
1508
1509     }
1510   return len;
1511 }
1512
1513 /* Assuming that the entire [begin, end) range of memory cannot be
1514    read, try to read whatever subrange is possible to read.
1515
1516    The function returns, in RESULT, either zero or one memory block.
1517    If there's a readable subrange at the beginning, it is completely
1518    read and returned.  Any further readable subrange will not be read.
1519    Otherwise, if there's a readable subrange at the end, it will be
1520    completely read and returned.  Any readable subranges before it
1521    (obviously, not starting at the beginning), will be ignored.  In
1522    other cases -- either no readable subrange, or readable subrange(s)
1523    that is neither at the beginning, or end, nothing is returned.
1524
1525    The purpose of this function is to handle a read across a boundary
1526    of accessible memory in a case when memory map is not available.
1527    The above restrictions are fine for this case, but will give
1528    incorrect results if the memory is 'patchy'.  However, supporting
1529    'patchy' memory would require trying to read every single byte,
1530    and it seems unacceptable solution.  Explicit memory map is
1531    recommended for this case -- and target_read_memory_robust will
1532    take care of reading multiple ranges then.  */
1533
1534 static void
1535 read_whatever_is_readable (struct target_ops *ops,
1536                            ULONGEST begin, ULONGEST end,
1537                            VEC(memory_read_result_s) **result)
1538 {
1539   gdb_byte *buf = xmalloc (end - begin);
1540   ULONGEST current_begin = begin;
1541   ULONGEST current_end = end;
1542   int forward;
1543   memory_read_result_s r;
1544   ULONGEST xfered_len;
1545
1546   /* If we previously failed to read 1 byte, nothing can be done here.  */
1547   if (end - begin <= 1)
1548     {
1549       xfree (buf);
1550       return;
1551     }
1552
1553   /* Check that either first or the last byte is readable, and give up
1554      if not.  This heuristic is meant to permit reading accessible memory
1555      at the boundary of accessible region.  */
1556   if (target_read_partial (ops, TARGET_OBJECT_MEMORY, NULL,
1557                            buf, begin, 1, &xfered_len) == TARGET_XFER_OK)
1558     {
1559       forward = 1;
1560       ++current_begin;
1561     }
1562   else if (target_read_partial (ops, TARGET_OBJECT_MEMORY, NULL,
1563                                 buf + (end-begin) - 1, end - 1, 1,
1564                                 &xfered_len) == TARGET_XFER_OK)
1565     {
1566       forward = 0;
1567       --current_end;
1568     }
1569   else
1570     {
1571       xfree (buf);
1572       return;
1573     }
1574
1575   /* Loop invariant is that the [current_begin, current_end) was previously
1576      found to be not readable as a whole.
1577
1578      Note loop condition -- if the range has 1 byte, we can't divide the range
1579      so there's no point trying further.  */
1580   while (current_end - current_begin > 1)
1581     {
1582       ULONGEST first_half_begin, first_half_end;
1583       ULONGEST second_half_begin, second_half_end;
1584       LONGEST xfer;
1585       ULONGEST middle = current_begin + (current_end - current_begin)/2;
1586
1587       if (forward)
1588         {
1589           first_half_begin = current_begin;
1590           first_half_end = middle;
1591           second_half_begin = middle;
1592           second_half_end = current_end;
1593         }
1594       else
1595         {
1596           first_half_begin = middle;
1597           first_half_end = current_end;
1598           second_half_begin = current_begin;
1599           second_half_end = middle;
1600         }
1601
1602       xfer = target_read (ops, TARGET_OBJECT_MEMORY, NULL,
1603                           buf + (first_half_begin - begin),
1604                           first_half_begin,
1605                           first_half_end - first_half_begin);
1606
1607       if (xfer == first_half_end - first_half_begin)
1608         {
1609           /* This half reads up fine.  So, the error must be in the
1610              other half.  */
1611           current_begin = second_half_begin;
1612           current_end = second_half_end;
1613         }
1614       else
1615         {
1616           /* This half is not readable.  Because we've tried one byte, we
1617              know some part of this half if actually redable.  Go to the next
1618              iteration to divide again and try to read.
1619
1620              We don't handle the other half, because this function only tries
1621              to read a single readable subrange.  */
1622           current_begin = first_half_begin;
1623           current_end = first_half_end;
1624         }
1625     }
1626
1627   if (forward)
1628     {
1629       /* The [begin, current_begin) range has been read.  */
1630       r.begin = begin;
1631       r.end = current_begin;
1632       r.data = buf;
1633     }
1634   else
1635     {
1636       /* The [current_end, end) range has been read.  */
1637       LONGEST rlen = end - current_end;
1638
1639       r.data = xmalloc (rlen);
1640       memcpy (r.data, buf + current_end - begin, rlen);
1641       r.begin = current_end;
1642       r.end = end;
1643       xfree (buf);
1644     }
1645   VEC_safe_push(memory_read_result_s, (*result), &r);
1646 }
1647
1648 void
1649 free_memory_read_result_vector (void *x)
1650 {
1651   VEC(memory_read_result_s) *v = x;
1652   memory_read_result_s *current;
1653   int ix;
1654
1655   for (ix = 0; VEC_iterate (memory_read_result_s, v, ix, current); ++ix)
1656     {
1657       xfree (current->data);
1658     }
1659   VEC_free (memory_read_result_s, v);
1660 }
1661
1662 VEC(memory_read_result_s) *
1663 read_memory_robust (struct target_ops *ops, ULONGEST offset, LONGEST len)
1664 {
1665   VEC(memory_read_result_s) *result = 0;
1666
1667   LONGEST xfered = 0;
1668   while (xfered < len)
1669     {
1670       struct mem_region *region = lookup_mem_region (offset + xfered);
1671       LONGEST rlen;
1672
1673       /* If there is no explicit region, a fake one should be created.  */
1674       gdb_assert (region);
1675
1676       if (region->hi == 0)
1677         rlen = len - xfered;
1678       else
1679         rlen = region->hi - offset;
1680
1681       if (region->attrib.mode == MEM_NONE || region->attrib.mode == MEM_WO)
1682         {
1683           /* Cannot read this region.  Note that we can end up here only
1684              if the region is explicitly marked inaccessible, or
1685              'inaccessible-by-default' is in effect.  */
1686           xfered += rlen;
1687         }
1688       else
1689         {
1690           LONGEST to_read = min (len - xfered, rlen);
1691           gdb_byte *buffer = (gdb_byte *)xmalloc (to_read);
1692
1693           LONGEST xfer = target_read (ops, TARGET_OBJECT_MEMORY, NULL,
1694                                       (gdb_byte *) buffer,
1695                                       offset + xfered, to_read);
1696           /* Call an observer, notifying them of the xfer progress?  */
1697           if (xfer <= 0)
1698             {
1699               /* Got an error reading full chunk.  See if maybe we can read
1700                  some subrange.  */
1701               xfree (buffer);
1702               read_whatever_is_readable (ops, offset + xfered,
1703                                          offset + xfered + to_read, &result);
1704               xfered += to_read;
1705             }
1706           else
1707             {
1708               struct memory_read_result r;
1709               r.data = buffer;
1710               r.begin = offset + xfered;
1711               r.end = r.begin + xfer;
1712               VEC_safe_push (memory_read_result_s, result, &r);
1713               xfered += xfer;
1714             }
1715           QUIT;
1716         }
1717     }
1718   return result;
1719 }
1720
1721
1722 /* An alternative to target_write with progress callbacks.  */
1723
1724 LONGEST
1725 target_write_with_progress (struct target_ops *ops,
1726                             enum target_object object,
1727                             const char *annex, const gdb_byte *buf,
1728                             ULONGEST offset, LONGEST len,
1729                             void (*progress) (ULONGEST, void *), void *baton)
1730 {
1731   LONGEST xfered = 0;
1732
1733   /* Give the progress callback a chance to set up.  */
1734   if (progress)
1735     (*progress) (0, baton);
1736
1737   while (xfered < len)
1738     {
1739       ULONGEST xfered_len;
1740       enum target_xfer_status status;
1741
1742       status = target_write_partial (ops, object, annex,
1743                                      (gdb_byte *) buf + xfered,
1744                                      offset + xfered, len - xfered,
1745                                      &xfered_len);
1746
1747       if (status != TARGET_XFER_OK)
1748         return status == TARGET_XFER_EOF ? xfered : -1;
1749
1750       if (progress)
1751         (*progress) (xfered_len, baton);
1752
1753       xfered += xfered_len;
1754       QUIT;
1755     }
1756   return len;
1757 }
1758
1759 /* For docs on target_write see target.h.  */
1760
1761 LONGEST
1762 target_write (struct target_ops *ops,
1763               enum target_object object,
1764               const char *annex, const gdb_byte *buf,
1765               ULONGEST offset, LONGEST len)
1766 {
1767   return target_write_with_progress (ops, object, annex, buf, offset, len,
1768                                      NULL, NULL);
1769 }
1770
1771 /* Read OBJECT/ANNEX using OPS.  Store the result in *BUF_P and return
1772    the size of the transferred data.  PADDING additional bytes are
1773    available in *BUF_P.  This is a helper function for
1774    target_read_alloc; see the declaration of that function for more
1775    information.  */
1776
1777 static LONGEST
1778 target_read_alloc_1 (struct target_ops *ops, enum target_object object,
1779                      const char *annex, gdb_byte **buf_p, int padding)
1780 {
1781   size_t buf_alloc, buf_pos;
1782   gdb_byte *buf;
1783
1784   /* This function does not have a length parameter; it reads the
1785      entire OBJECT).  Also, it doesn't support objects fetched partly
1786      from one target and partly from another (in a different stratum,
1787      e.g. a core file and an executable).  Both reasons make it
1788      unsuitable for reading memory.  */
1789   gdb_assert (object != TARGET_OBJECT_MEMORY);
1790
1791   /* Start by reading up to 4K at a time.  The target will throttle
1792      this number down if necessary.  */
1793   buf_alloc = 4096;
1794   buf = xmalloc (buf_alloc);
1795   buf_pos = 0;
1796   while (1)
1797     {
1798       ULONGEST xfered_len;
1799       enum target_xfer_status status;
1800
1801       status = target_read_partial (ops, object, annex, &buf[buf_pos],
1802                                     buf_pos, buf_alloc - buf_pos - padding,
1803                                     &xfered_len);
1804
1805       if (status == TARGET_XFER_EOF)
1806         {
1807           /* Read all there was.  */
1808           if (buf_pos == 0)
1809             xfree (buf);
1810           else
1811             *buf_p = buf;
1812           return buf_pos;
1813         }
1814       else if (status != TARGET_XFER_OK)
1815         {
1816           /* An error occurred.  */
1817           xfree (buf);
1818           return TARGET_XFER_E_IO;
1819         }
1820
1821       buf_pos += xfered_len;
1822
1823       /* If the buffer is filling up, expand it.  */
1824       if (buf_alloc < buf_pos * 2)
1825         {
1826           buf_alloc *= 2;
1827           buf = xrealloc (buf, buf_alloc);
1828         }
1829
1830       QUIT;
1831     }
1832 }
1833
1834 /* Read OBJECT/ANNEX using OPS.  Store the result in *BUF_P and return
1835    the size of the transferred data.  See the declaration in "target.h"
1836    function for more information about the return value.  */
1837
1838 LONGEST
1839 target_read_alloc (struct target_ops *ops, enum target_object object,
1840                    const char *annex, gdb_byte **buf_p)
1841 {
1842   return target_read_alloc_1 (ops, object, annex, buf_p, 0);
1843 }
1844
1845 /* Read OBJECT/ANNEX using OPS.  The result is NUL-terminated and
1846    returned as a string, allocated using xmalloc.  If an error occurs
1847    or the transfer is unsupported, NULL is returned.  Empty objects
1848    are returned as allocated but empty strings.  A warning is issued
1849    if the result contains any embedded NUL bytes.  */
1850
1851 char *
1852 target_read_stralloc (struct target_ops *ops, enum target_object object,
1853                       const char *annex)
1854 {
1855   gdb_byte *buffer;
1856   char *bufstr;
1857   LONGEST i, transferred;
1858
1859   transferred = target_read_alloc_1 (ops, object, annex, &buffer, 1);
1860   bufstr = (char *) buffer;
1861
1862   if (transferred < 0)
1863     return NULL;
1864
1865   if (transferred == 0)
1866     return xstrdup ("");
1867
1868   bufstr[transferred] = 0;
1869
1870   /* Check for embedded NUL bytes; but allow trailing NULs.  */
1871   for (i = strlen (bufstr); i < transferred; i++)
1872     if (bufstr[i] != 0)
1873       {
1874         warning (_("target object %d, annex %s, "
1875                    "contained unexpected null characters"),
1876                  (int) object, annex ? annex : "(none)");
1877         break;
1878       }
1879
1880   return bufstr;
1881 }
1882
1883 /* Memory transfer methods.  */
1884
1885 void
1886 get_target_memory (struct target_ops *ops, CORE_ADDR addr, gdb_byte *buf,
1887                    LONGEST len)
1888 {
1889   /* This method is used to read from an alternate, non-current
1890      target.  This read must bypass the overlay support (as symbols
1891      don't match this target), and GDB's internal cache (wrong cache
1892      for this target).  */
1893   if (target_read (ops, TARGET_OBJECT_RAW_MEMORY, NULL, buf, addr, len)
1894       != len)
1895     memory_error (TARGET_XFER_E_IO, addr);
1896 }
1897
1898 ULONGEST
1899 get_target_memory_unsigned (struct target_ops *ops, CORE_ADDR addr,
1900                             int len, enum bfd_endian byte_order)
1901 {
1902   gdb_byte buf[sizeof (ULONGEST)];
1903
1904   gdb_assert (len <= sizeof (buf));
1905   get_target_memory (ops, addr, buf, len);
1906   return extract_unsigned_integer (buf, len, byte_order);
1907 }
1908
1909 /* See target.h.  */
1910
1911 int
1912 target_insert_breakpoint (struct gdbarch *gdbarch,
1913                           struct bp_target_info *bp_tgt)
1914 {
1915   if (!may_insert_breakpoints)
1916     {
1917       warning (_("May not insert breakpoints"));
1918       return 1;
1919     }
1920
1921   return current_target.to_insert_breakpoint (&current_target,
1922                                               gdbarch, bp_tgt);
1923 }
1924
1925 /* See target.h.  */
1926
1927 int
1928 target_remove_breakpoint (struct gdbarch *gdbarch,
1929                           struct bp_target_info *bp_tgt)
1930 {
1931   /* This is kind of a weird case to handle, but the permission might
1932      have been changed after breakpoints were inserted - in which case
1933      we should just take the user literally and assume that any
1934      breakpoints should be left in place.  */
1935   if (!may_insert_breakpoints)
1936     {
1937       warning (_("May not remove breakpoints"));
1938       return 1;
1939     }
1940
1941   return current_target.to_remove_breakpoint (&current_target,
1942                                               gdbarch, bp_tgt);
1943 }
1944
1945 static void
1946 target_info (char *args, int from_tty)
1947 {
1948   struct target_ops *t;
1949   int has_all_mem = 0;
1950
1951   if (symfile_objfile != NULL)
1952     printf_unfiltered (_("Symbols from \"%s\".\n"),
1953                        objfile_name (symfile_objfile));
1954
1955   for (t = target_stack; t != NULL; t = t->beneath)
1956     {
1957       if (!(*t->to_has_memory) (t))
1958         continue;
1959
1960       if ((int) (t->to_stratum) <= (int) dummy_stratum)
1961         continue;
1962       if (has_all_mem)
1963         printf_unfiltered (_("\tWhile running this, "
1964                              "GDB does not access memory from...\n"));
1965       printf_unfiltered ("%s:\n", t->to_longname);
1966       (t->to_files_info) (t);
1967       has_all_mem = (*t->to_has_all_memory) (t);
1968     }
1969 }
1970
1971 /* This function is called before any new inferior is created, e.g.
1972    by running a program, attaching, or connecting to a target.
1973    It cleans up any state from previous invocations which might
1974    change between runs.  This is a subset of what target_preopen
1975    resets (things which might change between targets).  */
1976
1977 void
1978 target_pre_inferior (int from_tty)
1979 {
1980   /* Clear out solib state.  Otherwise the solib state of the previous
1981      inferior might have survived and is entirely wrong for the new
1982      target.  This has been observed on GNU/Linux using glibc 2.3.  How
1983      to reproduce:
1984
1985      bash$ ./foo&
1986      [1] 4711
1987      bash$ ./foo&
1988      [1] 4712
1989      bash$ gdb ./foo
1990      [...]
1991      (gdb) attach 4711
1992      (gdb) detach
1993      (gdb) attach 4712
1994      Cannot access memory at address 0xdeadbeef
1995   */
1996
1997   /* In some OSs, the shared library list is the same/global/shared
1998      across inferiors.  If code is shared between processes, so are
1999      memory regions and features.  */
2000   if (!gdbarch_has_global_solist (target_gdbarch ()))
2001     {
2002       no_shared_libraries (NULL, from_tty);
2003
2004       invalidate_target_mem_regions ();
2005
2006       target_clear_description ();
2007     }
2008
2009   agent_capability_invalidate ();
2010 }
2011
2012 /* Callback for iterate_over_inferiors.  Gets rid of the given
2013    inferior.  */
2014
2015 static int
2016 dispose_inferior (struct inferior *inf, void *args)
2017 {
2018   struct thread_info *thread;
2019
2020   thread = any_thread_of_process (inf->pid);
2021   if (thread)
2022     {
2023       switch_to_thread (thread->ptid);
2024
2025       /* Core inferiors actually should be detached, not killed.  */
2026       if (target_has_execution)
2027         target_kill ();
2028       else
2029         target_detach (NULL, 0);
2030     }
2031
2032   return 0;
2033 }
2034
2035 /* This is to be called by the open routine before it does
2036    anything.  */
2037
2038 void
2039 target_preopen (int from_tty)
2040 {
2041   dont_repeat ();
2042
2043   if (have_inferiors ())
2044     {
2045       if (!from_tty
2046           || !have_live_inferiors ()
2047           || query (_("A program is being debugged already.  Kill it? ")))
2048         iterate_over_inferiors (dispose_inferior, NULL);
2049       else
2050         error (_("Program not killed."));
2051     }
2052
2053   /* Calling target_kill may remove the target from the stack.  But if
2054      it doesn't (which seems like a win for UDI), remove it now.  */
2055   /* Leave the exec target, though.  The user may be switching from a
2056      live process to a core of the same program.  */
2057   pop_all_targets_above (file_stratum);
2058
2059   target_pre_inferior (from_tty);
2060 }
2061
2062 /* Detach a target after doing deferred register stores.  */
2063
2064 void
2065 target_detach (const char *args, int from_tty)
2066 {
2067   struct target_ops* t;
2068   
2069   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
2070     /* Don't remove global breakpoints here.  They're removed on
2071        disconnection from the target.  */
2072     ;
2073   else
2074     /* If we're in breakpoints-always-inserted mode, have to remove
2075        them before detaching.  */
2076     remove_breakpoints_pid (ptid_get_pid (inferior_ptid));
2077
2078   prepare_for_detach ();
2079
2080   current_target.to_detach (&current_target, args, from_tty);
2081   if (targetdebug)
2082     fprintf_unfiltered (gdb_stdlog, "target_detach (%s, %d)\n",
2083                         args, from_tty);
2084 }
2085
2086 void
2087 target_disconnect (char *args, int from_tty)
2088 {
2089   /* If we're in breakpoints-always-inserted mode or if breakpoints
2090      are global across processes, we have to remove them before
2091      disconnecting.  */
2092   remove_breakpoints ();
2093
2094   if (targetdebug)
2095     fprintf_unfiltered (gdb_stdlog, "target_disconnect (%s, %d)\n",
2096                         args, from_tty);
2097   current_target.to_disconnect (&current_target, args, from_tty);
2098 }
2099
2100 ptid_t
2101 target_wait (ptid_t ptid, struct target_waitstatus *status, int options)
2102 {
2103   struct target_ops *t;
2104   ptid_t retval = (current_target.to_wait) (&current_target, ptid,
2105                                             status, options);
2106
2107   if (targetdebug)
2108     {
2109       char *status_string;
2110       char *options_string;
2111
2112       status_string = target_waitstatus_to_string (status);
2113       options_string = target_options_to_string (options);
2114       fprintf_unfiltered (gdb_stdlog,
2115                           "target_wait (%d, status, options={%s})"
2116                           " = %d,   %s\n",
2117                           ptid_get_pid (ptid), options_string,
2118                           ptid_get_pid (retval), status_string);
2119       xfree (status_string);
2120       xfree (options_string);
2121     }
2122
2123   return retval;
2124 }
2125
2126 char *
2127 target_pid_to_str (ptid_t ptid)
2128 {
2129   return (*current_target.to_pid_to_str) (&current_target, ptid);
2130 }
2131
2132 char *
2133 target_thread_name (struct thread_info *info)
2134 {
2135   return current_target.to_thread_name (&current_target, info);
2136 }
2137
2138 void
2139 target_resume (ptid_t ptid, int step, enum gdb_signal signal)
2140 {
2141   struct target_ops *t;
2142
2143   target_dcache_invalidate ();
2144
2145   current_target.to_resume (&current_target, ptid, step, signal);
2146   if (targetdebug)
2147     fprintf_unfiltered (gdb_stdlog, "target_resume (%d, %s, %s)\n",
2148                         ptid_get_pid (ptid),
2149                         step ? "step" : "continue",
2150                         gdb_signal_to_name (signal));
2151
2152   registers_changed_ptid (ptid);
2153   set_executing (ptid, 1);
2154   set_running (ptid, 1);
2155   clear_inline_frame_state (ptid);
2156 }
2157
2158 void
2159 target_pass_signals (int numsigs, unsigned char *pass_signals)
2160 {
2161   if (targetdebug)
2162     {
2163       int i;
2164
2165       fprintf_unfiltered (gdb_stdlog, "target_pass_signals (%d, {",
2166                           numsigs);
2167
2168       for (i = 0; i < numsigs; i++)
2169         if (pass_signals[i])
2170           fprintf_unfiltered (gdb_stdlog, " %s",
2171                               gdb_signal_to_name (i));
2172
2173       fprintf_unfiltered (gdb_stdlog, " })\n");
2174     }
2175
2176   (*current_target.to_pass_signals) (&current_target, numsigs, pass_signals);
2177 }
2178
2179 void
2180 target_program_signals (int numsigs, unsigned char *program_signals)
2181 {
2182   if (targetdebug)
2183     {
2184       int i;
2185
2186       fprintf_unfiltered (gdb_stdlog, "target_program_signals (%d, {",
2187                           numsigs);
2188
2189       for (i = 0; i < numsigs; i++)
2190         if (program_signals[i])
2191           fprintf_unfiltered (gdb_stdlog, " %s",
2192                               gdb_signal_to_name (i));
2193
2194       fprintf_unfiltered (gdb_stdlog, " })\n");
2195     }
2196
2197   (*current_target.to_program_signals) (&current_target,
2198                                         numsigs, program_signals);
2199 }
2200
2201 static int
2202 default_follow_fork (struct target_ops *self, int follow_child,
2203                      int detach_fork)
2204 {
2205   /* Some target returned a fork event, but did not know how to follow it.  */
2206   internal_error (__FILE__, __LINE__,
2207                   _("could not find a target to follow fork"));
2208 }
2209
2210 /* Look through the list of possible targets for a target that can
2211    follow forks.  */
2212
2213 int
2214 target_follow_fork (int follow_child, int detach_fork)
2215 {
2216   int retval = current_target.to_follow_fork (&current_target,
2217                                               follow_child, detach_fork);
2218
2219   if (targetdebug)
2220     fprintf_unfiltered (gdb_stdlog,
2221                         "target_follow_fork (%d, %d) = %d\n",
2222                         follow_child, detach_fork, retval);
2223   return retval;
2224 }
2225
2226 static void
2227 default_mourn_inferior (struct target_ops *self)
2228 {
2229   internal_error (__FILE__, __LINE__,
2230                   _("could not find a target to follow mourn inferior"));
2231 }
2232
2233 void
2234 target_mourn_inferior (void)
2235 {
2236   current_target.to_mourn_inferior (&current_target);
2237   if (targetdebug)
2238     fprintf_unfiltered (gdb_stdlog, "target_mourn_inferior ()\n");
2239
2240   /* We no longer need to keep handles on any of the object files.
2241      Make sure to release them to avoid unnecessarily locking any
2242      of them while we're not actually debugging.  */
2243   bfd_cache_close_all ();
2244 }
2245
2246 /* Look for a target which can describe architectural features, starting
2247    from TARGET.  If we find one, return its description.  */
2248
2249 const struct target_desc *
2250 target_read_description (struct target_ops *target)
2251 {
2252   return target->to_read_description (target);
2253 }
2254
2255 /* This implements a basic search of memory, reading target memory and
2256    performing the search here (as opposed to performing the search in on the
2257    target side with, for example, gdbserver).  */
2258
2259 int
2260 simple_search_memory (struct target_ops *ops,
2261                       CORE_ADDR start_addr, ULONGEST search_space_len,
2262                       const gdb_byte *pattern, ULONGEST pattern_len,
2263                       CORE_ADDR *found_addrp)
2264 {
2265   /* NOTE: also defined in find.c testcase.  */
2266 #define SEARCH_CHUNK_SIZE 16000
2267   const unsigned chunk_size = SEARCH_CHUNK_SIZE;
2268   /* Buffer to hold memory contents for searching.  */
2269   gdb_byte *search_buf;
2270   unsigned search_buf_size;
2271   struct cleanup *old_cleanups;
2272
2273   search_buf_size = chunk_size + pattern_len - 1;
2274
2275   /* No point in trying to allocate a buffer larger than the search space.  */
2276   if (search_space_len < search_buf_size)
2277     search_buf_size = search_space_len;
2278
2279   search_buf = malloc (search_buf_size);
2280   if (search_buf == NULL)
2281     error (_("Unable to allocate memory to perform the search."));
2282   old_cleanups = make_cleanup (free_current_contents, &search_buf);
2283
2284   /* Prime the search buffer.  */
2285
2286   if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2287                    search_buf, start_addr, search_buf_size) != search_buf_size)
2288     {
2289       warning (_("Unable to access %s bytes of target "
2290                  "memory at %s, halting search."),
2291                pulongest (search_buf_size), hex_string (start_addr));
2292       do_cleanups (old_cleanups);
2293       return -1;
2294     }
2295
2296   /* Perform the search.
2297
2298      The loop is kept simple by allocating [N + pattern-length - 1] bytes.
2299      When we've scanned N bytes we copy the trailing bytes to the start and
2300      read in another N bytes.  */
2301
2302   while (search_space_len >= pattern_len)
2303     {
2304       gdb_byte *found_ptr;
2305       unsigned nr_search_bytes = min (search_space_len, search_buf_size);
2306
2307       found_ptr = memmem (search_buf, nr_search_bytes,
2308                           pattern, pattern_len);
2309
2310       if (found_ptr != NULL)
2311         {
2312           CORE_ADDR found_addr = start_addr + (found_ptr - search_buf);
2313
2314           *found_addrp = found_addr;
2315           do_cleanups (old_cleanups);
2316           return 1;
2317         }
2318
2319       /* Not found in this chunk, skip to next chunk.  */
2320
2321       /* Don't let search_space_len wrap here, it's unsigned.  */
2322       if (search_space_len >= chunk_size)
2323         search_space_len -= chunk_size;
2324       else
2325         search_space_len = 0;
2326
2327       if (search_space_len >= pattern_len)
2328         {
2329           unsigned keep_len = search_buf_size - chunk_size;
2330           CORE_ADDR read_addr = start_addr + chunk_size + keep_len;
2331           int nr_to_read;
2332
2333           /* Copy the trailing part of the previous iteration to the front
2334              of the buffer for the next iteration.  */
2335           gdb_assert (keep_len == pattern_len - 1);
2336           memcpy (search_buf, search_buf + chunk_size, keep_len);
2337
2338           nr_to_read = min (search_space_len - keep_len, chunk_size);
2339
2340           if (target_read (ops, TARGET_OBJECT_MEMORY, NULL,
2341                            search_buf + keep_len, read_addr,
2342                            nr_to_read) != nr_to_read)
2343             {
2344               warning (_("Unable to access %s bytes of target "
2345                          "memory at %s, halting search."),
2346                        plongest (nr_to_read),
2347                        hex_string (read_addr));
2348               do_cleanups (old_cleanups);
2349               return -1;
2350             }
2351
2352           start_addr += chunk_size;
2353         }
2354     }
2355
2356   /* Not found.  */
2357
2358   do_cleanups (old_cleanups);
2359   return 0;
2360 }
2361
2362 /* Default implementation of memory-searching.  */
2363
2364 static int
2365 default_search_memory (struct target_ops *self,
2366                        CORE_ADDR start_addr, ULONGEST search_space_len,
2367                        const gdb_byte *pattern, ULONGEST pattern_len,
2368                        CORE_ADDR *found_addrp)
2369 {
2370   /* Start over from the top of the target stack.  */
2371   return simple_search_memory (current_target.beneath,
2372                                start_addr, search_space_len,
2373                                pattern, pattern_len, found_addrp);
2374 }
2375
2376 /* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the
2377    sequence of bytes in PATTERN with length PATTERN_LEN.
2378
2379    The result is 1 if found, 0 if not found, and -1 if there was an error
2380    requiring halting of the search (e.g. memory read error).
2381    If the pattern is found the address is recorded in FOUND_ADDRP.  */
2382
2383 int
2384 target_search_memory (CORE_ADDR start_addr, ULONGEST search_space_len,
2385                       const gdb_byte *pattern, ULONGEST pattern_len,
2386                       CORE_ADDR *found_addrp)
2387 {
2388   int found;
2389
2390   if (targetdebug)
2391     fprintf_unfiltered (gdb_stdlog, "target_search_memory (%s, ...)\n",
2392                         hex_string (start_addr));
2393
2394   found = current_target.to_search_memory (&current_target, start_addr,
2395                                            search_space_len,
2396                                            pattern, pattern_len, found_addrp);
2397
2398   if (targetdebug)
2399     fprintf_unfiltered (gdb_stdlog, "  = %d\n", found);
2400
2401   return found;
2402 }
2403
2404 /* Look through the currently pushed targets.  If none of them will
2405    be able to restart the currently running process, issue an error
2406    message.  */
2407
2408 void
2409 target_require_runnable (void)
2410 {
2411   struct target_ops *t;
2412
2413   for (t = target_stack; t != NULL; t = t->beneath)
2414     {
2415       /* If this target knows how to create a new program, then
2416          assume we will still be able to after killing the current
2417          one.  Either killing and mourning will not pop T, or else
2418          find_default_run_target will find it again.  */
2419       if (t->to_create_inferior != NULL)
2420         return;
2421
2422       /* Do not worry about thread_stratum targets that can not
2423          create inferiors.  Assume they will be pushed again if
2424          necessary, and continue to the process_stratum.  */
2425       if (t->to_stratum == thread_stratum
2426           || t->to_stratum == arch_stratum)
2427         continue;
2428
2429       error (_("The \"%s\" target does not support \"run\".  "
2430                "Try \"help target\" or \"continue\"."),
2431              t->to_shortname);
2432     }
2433
2434   /* This function is only called if the target is running.  In that
2435      case there should have been a process_stratum target and it
2436      should either know how to create inferiors, or not...  */
2437   internal_error (__FILE__, __LINE__, _("No targets found"));
2438 }
2439
2440 /* Whether GDB is allowed to fall back to the default run target for
2441    "run", "attach", etc. when no target is connected yet.  */
2442 static int auto_connect_native_target = 1;
2443
2444 static void
2445 show_auto_connect_native_target (struct ui_file *file, int from_tty,
2446                                  struct cmd_list_element *c, const char *value)
2447 {
2448   fprintf_filtered (file,
2449                     _("Whether GDB may automatically connect to the "
2450                       "native target is %s.\n"),
2451                     value);
2452 }
2453
2454 /* Look through the list of possible targets for a target that can
2455    execute a run or attach command without any other data.  This is
2456    used to locate the default process stratum.
2457
2458    If DO_MESG is not NULL, the result is always valid (error() is
2459    called for errors); else, return NULL on error.  */
2460
2461 static struct target_ops *
2462 find_default_run_target (char *do_mesg)
2463 {
2464   struct target_ops *runable = NULL;
2465
2466   if (auto_connect_native_target)
2467     {
2468       struct target_ops **t;
2469       int count = 0;
2470
2471       for (t = target_structs; t < target_structs + target_struct_size;
2472            ++t)
2473         {
2474           if ((*t)->to_can_run != delegate_can_run && target_can_run (*t))
2475             {
2476               runable = *t;
2477               ++count;
2478             }
2479         }
2480
2481       if (count != 1)
2482         runable = NULL;
2483     }
2484
2485   if (runable == NULL)
2486     {
2487       if (do_mesg)
2488         error (_("Don't know how to %s.  Try \"help target\"."), do_mesg);
2489       else
2490         return NULL;
2491     }
2492
2493   return runable;
2494 }
2495
2496 /* See target.h.  */
2497
2498 struct target_ops *
2499 find_attach_target (void)
2500 {
2501   struct target_ops *t;
2502
2503   /* If a target on the current stack can attach, use it.  */
2504   for (t = current_target.beneath; t != NULL; t = t->beneath)
2505     {
2506       if (t->to_attach != NULL)
2507         break;
2508     }
2509
2510   /* Otherwise, use the default run target for attaching.  */
2511   if (t == NULL)
2512     t = find_default_run_target ("attach");
2513
2514   return t;
2515 }
2516
2517 /* See target.h.  */
2518
2519 struct target_ops *
2520 find_run_target (void)
2521 {
2522   struct target_ops *t;
2523
2524   /* If a target on the current stack can attach, use it.  */
2525   for (t = current_target.beneath; t != NULL; t = t->beneath)
2526     {
2527       if (t->to_create_inferior != NULL)
2528         break;
2529     }
2530
2531   /* Otherwise, use the default run target.  */
2532   if (t == NULL)
2533     t = find_default_run_target ("run");
2534
2535   return t;
2536 }
2537
2538 /* Implement the "info proc" command.  */
2539
2540 int
2541 target_info_proc (char *args, enum info_proc_what what)
2542 {
2543   struct target_ops *t;
2544
2545   /* If we're already connected to something that can get us OS
2546      related data, use it.  Otherwise, try using the native
2547      target.  */
2548   if (current_target.to_stratum >= process_stratum)
2549     t = current_target.beneath;
2550   else
2551     t = find_default_run_target (NULL);
2552
2553   for (; t != NULL; t = t->beneath)
2554     {
2555       if (t->to_info_proc != NULL)
2556         {
2557           t->to_info_proc (t, args, what);
2558
2559           if (targetdebug)
2560             fprintf_unfiltered (gdb_stdlog,
2561                                 "target_info_proc (\"%s\", %d)\n", args, what);
2562
2563           return 1;
2564         }
2565     }
2566
2567   return 0;
2568 }
2569
2570 static int
2571 find_default_supports_disable_randomization (struct target_ops *self)
2572 {
2573   struct target_ops *t;
2574
2575   t = find_default_run_target (NULL);
2576   if (t && t->to_supports_disable_randomization)
2577     return (t->to_supports_disable_randomization) (t);
2578   return 0;
2579 }
2580
2581 int
2582 target_supports_disable_randomization (void)
2583 {
2584   struct target_ops *t;
2585
2586   for (t = &current_target; t != NULL; t = t->beneath)
2587     if (t->to_supports_disable_randomization)
2588       return t->to_supports_disable_randomization (t);
2589
2590   return 0;
2591 }
2592
2593 char *
2594 target_get_osdata (const char *type)
2595 {
2596   struct target_ops *t;
2597
2598   /* If we're already connected to something that can get us OS
2599      related data, use it.  Otherwise, try using the native
2600      target.  */
2601   if (current_target.to_stratum >= process_stratum)
2602     t = current_target.beneath;
2603   else
2604     t = find_default_run_target ("get OS data");
2605
2606   if (!t)
2607     return NULL;
2608
2609   return target_read_stralloc (t, TARGET_OBJECT_OSDATA, type);
2610 }
2611
2612 /* Determine the current address space of thread PTID.  */
2613
2614 struct address_space *
2615 target_thread_address_space (ptid_t ptid)
2616 {
2617   struct address_space *aspace;
2618   struct inferior *inf;
2619   struct target_ops *t;
2620
2621   for (t = current_target.beneath; t != NULL; t = t->beneath)
2622     {
2623       if (t->to_thread_address_space != NULL)
2624         {
2625           aspace = t->to_thread_address_space (t, ptid);
2626           gdb_assert (aspace);
2627
2628           if (targetdebug)
2629             fprintf_unfiltered (gdb_stdlog,
2630                                 "target_thread_address_space (%s) = %d\n",
2631                                 target_pid_to_str (ptid),
2632                                 address_space_num (aspace));
2633           return aspace;
2634         }
2635     }
2636
2637   /* Fall-back to the "main" address space of the inferior.  */
2638   inf = find_inferior_pid (ptid_get_pid (ptid));
2639
2640   if (inf == NULL || inf->aspace == NULL)
2641     internal_error (__FILE__, __LINE__,
2642                     _("Can't determine the current "
2643                       "address space of thread %s\n"),
2644                     target_pid_to_str (ptid));
2645
2646   return inf->aspace;
2647 }
2648
2649
2650 /* Target file operations.  */
2651
2652 static struct target_ops *
2653 default_fileio_target (void)
2654 {
2655   /* If we're already connected to something that can perform
2656      file I/O, use it. Otherwise, try using the native target.  */
2657   if (current_target.to_stratum >= process_stratum)
2658     return current_target.beneath;
2659   else
2660     return find_default_run_target ("file I/O");
2661 }
2662
2663 /* Open FILENAME on the target, using FLAGS and MODE.  Return a
2664    target file descriptor, or -1 if an error occurs (and set
2665    *TARGET_ERRNO).  */
2666 int
2667 target_fileio_open (const char *filename, int flags, int mode,
2668                     int *target_errno)
2669 {
2670   struct target_ops *t;
2671
2672   for (t = default_fileio_target (); t != NULL; t = t->beneath)
2673     {
2674       if (t->to_fileio_open != NULL)
2675         {
2676           int fd = t->to_fileio_open (t, filename, flags, mode, target_errno);
2677
2678           if (targetdebug)
2679             fprintf_unfiltered (gdb_stdlog,
2680                                 "target_fileio_open (%s,0x%x,0%o) = %d (%d)\n",
2681                                 filename, flags, mode,
2682                                 fd, fd != -1 ? 0 : *target_errno);
2683           return fd;
2684         }
2685     }
2686
2687   *target_errno = FILEIO_ENOSYS;
2688   return -1;
2689 }
2690
2691 /* Write up to LEN bytes from WRITE_BUF to FD on the target.
2692    Return the number of bytes written, or -1 if an error occurs
2693    (and set *TARGET_ERRNO).  */
2694 int
2695 target_fileio_pwrite (int fd, const gdb_byte *write_buf, int len,
2696                       ULONGEST offset, int *target_errno)
2697 {
2698   struct target_ops *t;
2699
2700   for (t = default_fileio_target (); t != NULL; t = t->beneath)
2701     {
2702       if (t->to_fileio_pwrite != NULL)
2703         {
2704           int ret = t->to_fileio_pwrite (t, fd, write_buf, len, offset,
2705                                          target_errno);
2706
2707           if (targetdebug)
2708             fprintf_unfiltered (gdb_stdlog,
2709                                 "target_fileio_pwrite (%d,...,%d,%s) "
2710                                 "= %d (%d)\n",
2711                                 fd, len, pulongest (offset),
2712                                 ret, ret != -1 ? 0 : *target_errno);
2713           return ret;
2714         }
2715     }
2716
2717   *target_errno = FILEIO_ENOSYS;
2718   return -1;
2719 }
2720
2721 /* Read up to LEN bytes FD on the target into READ_BUF.
2722    Return the number of bytes read, or -1 if an error occurs
2723    (and set *TARGET_ERRNO).  */
2724 int
2725 target_fileio_pread (int fd, gdb_byte *read_buf, int len,
2726                      ULONGEST offset, int *target_errno)
2727 {
2728   struct target_ops *t;
2729
2730   for (t = default_fileio_target (); t != NULL; t = t->beneath)
2731     {
2732       if (t->to_fileio_pread != NULL)
2733         {
2734           int ret = t->to_fileio_pread (t, fd, read_buf, len, offset,
2735                                         target_errno);
2736
2737           if (targetdebug)
2738             fprintf_unfiltered (gdb_stdlog,
2739                                 "target_fileio_pread (%d,...,%d,%s) "
2740                                 "= %d (%d)\n",
2741                                 fd, len, pulongest (offset),
2742                                 ret, ret != -1 ? 0 : *target_errno);
2743           return ret;
2744         }
2745     }
2746
2747   *target_errno = FILEIO_ENOSYS;
2748   return -1;
2749 }
2750
2751 /* Close FD on the target.  Return 0, or -1 if an error occurs
2752    (and set *TARGET_ERRNO).  */
2753 int
2754 target_fileio_close (int fd, int *target_errno)
2755 {
2756   struct target_ops *t;
2757
2758   for (t = default_fileio_target (); t != NULL; t = t->beneath)
2759     {
2760       if (t->to_fileio_close != NULL)
2761         {
2762           int ret = t->to_fileio_close (t, fd, target_errno);
2763
2764           if (targetdebug)
2765             fprintf_unfiltered (gdb_stdlog,
2766                                 "target_fileio_close (%d) = %d (%d)\n",
2767                                 fd, ret, ret != -1 ? 0 : *target_errno);
2768           return ret;
2769         }
2770     }
2771
2772   *target_errno = FILEIO_ENOSYS;
2773   return -1;
2774 }
2775
2776 /* Unlink FILENAME on the target.  Return 0, or -1 if an error
2777    occurs (and set *TARGET_ERRNO).  */
2778 int
2779 target_fileio_unlink (const char *filename, int *target_errno)
2780 {
2781   struct target_ops *t;
2782
2783   for (t = default_fileio_target (); t != NULL; t = t->beneath)
2784     {
2785       if (t->to_fileio_unlink != NULL)
2786         {
2787           int ret = t->to_fileio_unlink (t, filename, target_errno);
2788
2789           if (targetdebug)
2790             fprintf_unfiltered (gdb_stdlog,
2791                                 "target_fileio_unlink (%s) = %d (%d)\n",
2792                                 filename, ret, ret != -1 ? 0 : *target_errno);
2793           return ret;
2794         }
2795     }
2796
2797   *target_errno = FILEIO_ENOSYS;
2798   return -1;
2799 }
2800
2801 /* Read value of symbolic link FILENAME on the target.  Return a
2802    null-terminated string allocated via xmalloc, or NULL if an error
2803    occurs (and set *TARGET_ERRNO).  */
2804 char *
2805 target_fileio_readlink (const char *filename, int *target_errno)
2806 {
2807   struct target_ops *t;
2808
2809   for (t = default_fileio_target (); t != NULL; t = t->beneath)
2810     {
2811       if (t->to_fileio_readlink != NULL)
2812         {
2813           char *ret = t->to_fileio_readlink (t, filename, target_errno);
2814
2815           if (targetdebug)
2816             fprintf_unfiltered (gdb_stdlog,
2817                                 "target_fileio_readlink (%s) = %s (%d)\n",
2818                                 filename, ret? ret : "(nil)",
2819                                 ret? 0 : *target_errno);
2820           return ret;
2821         }
2822     }
2823
2824   *target_errno = FILEIO_ENOSYS;
2825   return NULL;
2826 }
2827
2828 static void
2829 target_fileio_close_cleanup (void *opaque)
2830 {
2831   int fd = *(int *) opaque;
2832   int target_errno;
2833
2834   target_fileio_close (fd, &target_errno);
2835 }
2836
2837 /* Read target file FILENAME.  Store the result in *BUF_P and
2838    return the size of the transferred data.  PADDING additional bytes are
2839    available in *BUF_P.  This is a helper function for
2840    target_fileio_read_alloc; see the declaration of that function for more
2841    information.  */
2842
2843 static LONGEST
2844 target_fileio_read_alloc_1 (const char *filename,
2845                             gdb_byte **buf_p, int padding)
2846 {
2847   struct cleanup *close_cleanup;
2848   size_t buf_alloc, buf_pos;
2849   gdb_byte *buf;
2850   LONGEST n;
2851   int fd;
2852   int target_errno;
2853
2854   fd = target_fileio_open (filename, FILEIO_O_RDONLY, 0700, &target_errno);
2855   if (fd == -1)
2856     return -1;
2857
2858   close_cleanup = make_cleanup (target_fileio_close_cleanup, &fd);
2859
2860   /* Start by reading up to 4K at a time.  The target will throttle
2861      this number down if necessary.  */
2862   buf_alloc = 4096;
2863   buf = xmalloc (buf_alloc);
2864   buf_pos = 0;
2865   while (1)
2866     {
2867       n = target_fileio_pread (fd, &buf[buf_pos],
2868                                buf_alloc - buf_pos - padding, buf_pos,
2869                                &target_errno);
2870       if (n < 0)
2871         {
2872           /* An error occurred.  */
2873           do_cleanups (close_cleanup);
2874           xfree (buf);
2875           return -1;
2876         }
2877       else if (n == 0)
2878         {
2879           /* Read all there was.  */
2880           do_cleanups (close_cleanup);
2881           if (buf_pos == 0)
2882             xfree (buf);
2883           else
2884             *buf_p = buf;
2885           return buf_pos;
2886         }
2887
2888       buf_pos += n;
2889
2890       /* If the buffer is filling up, expand it.  */
2891       if (buf_alloc < buf_pos * 2)
2892         {
2893           buf_alloc *= 2;
2894           buf = xrealloc (buf, buf_alloc);
2895         }
2896
2897       QUIT;
2898     }
2899 }
2900
2901 /* Read target file FILENAME.  Store the result in *BUF_P and return
2902    the size of the transferred data.  See the declaration in "target.h"
2903    function for more information about the return value.  */
2904
2905 LONGEST
2906 target_fileio_read_alloc (const char *filename, gdb_byte **buf_p)
2907 {
2908   return target_fileio_read_alloc_1 (filename, buf_p, 0);
2909 }
2910
2911 /* Read target file FILENAME.  The result is NUL-terminated and
2912    returned as a string, allocated using xmalloc.  If an error occurs
2913    or the transfer is unsupported, NULL is returned.  Empty objects
2914    are returned as allocated but empty strings.  A warning is issued
2915    if the result contains any embedded NUL bytes.  */
2916
2917 char *
2918 target_fileio_read_stralloc (const char *filename)
2919 {
2920   gdb_byte *buffer;
2921   char *bufstr;
2922   LONGEST i, transferred;
2923
2924   transferred = target_fileio_read_alloc_1 (filename, &buffer, 1);
2925   bufstr = (char *) buffer;
2926
2927   if (transferred < 0)
2928     return NULL;
2929
2930   if (transferred == 0)
2931     return xstrdup ("");
2932
2933   bufstr[transferred] = 0;
2934
2935   /* Check for embedded NUL bytes; but allow trailing NULs.  */
2936   for (i = strlen (bufstr); i < transferred; i++)
2937     if (bufstr[i] != 0)
2938       {
2939         warning (_("target file %s "
2940                    "contained unexpected null characters"),
2941                  filename);
2942         break;
2943       }
2944
2945   return bufstr;
2946 }
2947
2948
2949 static int
2950 default_region_ok_for_hw_watchpoint (struct target_ops *self,
2951                                      CORE_ADDR addr, int len)
2952 {
2953   return (len <= gdbarch_ptr_bit (target_gdbarch ()) / TARGET_CHAR_BIT);
2954 }
2955
2956 static int
2957 default_watchpoint_addr_within_range (struct target_ops *target,
2958                                       CORE_ADDR addr,
2959                                       CORE_ADDR start, int length)
2960 {
2961   return addr >= start && addr < start + length;
2962 }
2963
2964 static struct gdbarch *
2965 default_thread_architecture (struct target_ops *ops, ptid_t ptid)
2966 {
2967   return target_gdbarch ();
2968 }
2969
2970 static int
2971 return_zero (struct target_ops *ignore)
2972 {
2973   return 0;
2974 }
2975
2976 static int
2977 return_zero_has_execution (struct target_ops *ignore, ptid_t ignore2)
2978 {
2979   return 0;
2980 }
2981
2982 /*
2983  * Find the next target down the stack from the specified target.
2984  */
2985
2986 struct target_ops *
2987 find_target_beneath (struct target_ops *t)
2988 {
2989   return t->beneath;
2990 }
2991
2992 /* See target.h.  */
2993
2994 struct target_ops *
2995 find_target_at (enum strata stratum)
2996 {
2997   struct target_ops *t;
2998
2999   for (t = current_target.beneath; t != NULL; t = t->beneath)
3000     if (t->to_stratum == stratum)
3001       return t;
3002
3003   return NULL;
3004 }
3005
3006 \f
3007 /* The inferior process has died.  Long live the inferior!  */
3008
3009 void
3010 generic_mourn_inferior (void)
3011 {
3012   ptid_t ptid;
3013
3014   ptid = inferior_ptid;
3015   inferior_ptid = null_ptid;
3016
3017   /* Mark breakpoints uninserted in case something tries to delete a
3018      breakpoint while we delete the inferior's threads (which would
3019      fail, since the inferior is long gone).  */
3020   mark_breakpoints_out ();
3021
3022   if (!ptid_equal (ptid, null_ptid))
3023     {
3024       int pid = ptid_get_pid (ptid);
3025       exit_inferior (pid);
3026     }
3027
3028   /* Note this wipes step-resume breakpoints, so needs to be done
3029      after exit_inferior, which ends up referencing the step-resume
3030      breakpoints through clear_thread_inferior_resources.  */
3031   breakpoint_init_inferior (inf_exited);
3032
3033   registers_changed ();
3034
3035   reopen_exec_file ();
3036   reinit_frame_cache ();
3037
3038   if (deprecated_detach_hook)
3039     deprecated_detach_hook ();
3040 }
3041 \f
3042 /* Convert a normal process ID to a string.  Returns the string in a
3043    static buffer.  */
3044
3045 char *
3046 normal_pid_to_str (ptid_t ptid)
3047 {
3048   static char buf[32];
3049
3050   xsnprintf (buf, sizeof buf, "process %d", ptid_get_pid (ptid));
3051   return buf;
3052 }
3053
3054 static char *
3055 default_pid_to_str (struct target_ops *ops, ptid_t ptid)
3056 {
3057   return normal_pid_to_str (ptid);
3058 }
3059
3060 /* Error-catcher for target_find_memory_regions.  */
3061 static int
3062 dummy_find_memory_regions (struct target_ops *self,
3063                            find_memory_region_ftype ignore1, void *ignore2)
3064 {
3065   error (_("Command not implemented for this target."));
3066   return 0;
3067 }
3068
3069 /* Error-catcher for target_make_corefile_notes.  */
3070 static char *
3071 dummy_make_corefile_notes (struct target_ops *self,
3072                            bfd *ignore1, int *ignore2)
3073 {
3074   error (_("Command not implemented for this target."));
3075   return NULL;
3076 }
3077
3078 /* Set up the handful of non-empty slots needed by the dummy target
3079    vector.  */
3080
3081 static void
3082 init_dummy_target (void)
3083 {
3084   dummy_target.to_shortname = "None";
3085   dummy_target.to_longname = "None";
3086   dummy_target.to_doc = "";
3087   dummy_target.to_supports_disable_randomization
3088     = find_default_supports_disable_randomization;
3089   dummy_target.to_stratum = dummy_stratum;
3090   dummy_target.to_has_all_memory = return_zero;
3091   dummy_target.to_has_memory = return_zero;
3092   dummy_target.to_has_stack = return_zero;
3093   dummy_target.to_has_registers = return_zero;
3094   dummy_target.to_has_execution = return_zero_has_execution;
3095   dummy_target.to_magic = OPS_MAGIC;
3096
3097   install_dummy_methods (&dummy_target);
3098 }
3099 \f
3100 static void
3101 debug_to_open (char *args, int from_tty)
3102 {
3103   debug_target.to_open (args, from_tty);
3104
3105   fprintf_unfiltered (gdb_stdlog, "target_open (%s, %d)\n", args, from_tty);
3106 }
3107
3108 void
3109 target_close (struct target_ops *targ)
3110 {
3111   gdb_assert (!target_is_pushed (targ));
3112
3113   if (targ->to_xclose != NULL)
3114     targ->to_xclose (targ);
3115   else if (targ->to_close != NULL)
3116     targ->to_close (targ);
3117
3118   if (targetdebug)
3119     fprintf_unfiltered (gdb_stdlog, "target_close ()\n");
3120 }
3121
3122 int
3123 target_thread_alive (ptid_t ptid)
3124 {
3125   int retval;
3126
3127   retval = current_target.to_thread_alive (&current_target, ptid);
3128   if (targetdebug)
3129     fprintf_unfiltered (gdb_stdlog, "target_thread_alive (%d) = %d\n",
3130                         ptid_get_pid (ptid), retval);
3131
3132   return retval;
3133 }
3134
3135 void
3136 target_find_new_threads (void)
3137 {
3138   current_target.to_find_new_threads (&current_target);
3139   if (targetdebug)
3140     fprintf_unfiltered (gdb_stdlog, "target_find_new_threads ()\n");
3141 }
3142
3143 void
3144 target_stop (ptid_t ptid)
3145 {
3146   if (!may_stop)
3147     {
3148       warning (_("May not interrupt or stop the target, ignoring attempt"));
3149       return;
3150     }
3151
3152   (*current_target.to_stop) (&current_target, ptid);
3153 }
3154
3155 static void
3156 debug_to_post_attach (struct target_ops *self, int pid)
3157 {
3158   debug_target.to_post_attach (&debug_target, pid);
3159
3160   fprintf_unfiltered (gdb_stdlog, "target_post_attach (%d)\n", pid);
3161 }
3162
3163 /* Concatenate ELEM to LIST, a comma separate list, and return the
3164    result.  The LIST incoming argument is released.  */
3165
3166 static char *
3167 str_comma_list_concat_elem (char *list, const char *elem)
3168 {
3169   if (list == NULL)
3170     return xstrdup (elem);
3171   else
3172     return reconcat (list, list, ", ", elem, (char *) NULL);
3173 }
3174
3175 /* Helper for target_options_to_string.  If OPT is present in
3176    TARGET_OPTIONS, append the OPT_STR (string version of OPT) in RET.
3177    Returns the new resulting string.  OPT is removed from
3178    TARGET_OPTIONS.  */
3179
3180 static char *
3181 do_option (int *target_options, char *ret,
3182            int opt, char *opt_str)
3183 {
3184   if ((*target_options & opt) != 0)
3185     {
3186       ret = str_comma_list_concat_elem (ret, opt_str);
3187       *target_options &= ~opt;
3188     }
3189
3190   return ret;
3191 }
3192
3193 char *
3194 target_options_to_string (int target_options)
3195 {
3196   char *ret = NULL;
3197
3198 #define DO_TARG_OPTION(OPT) \
3199   ret = do_option (&target_options, ret, OPT, #OPT)
3200
3201   DO_TARG_OPTION (TARGET_WNOHANG);
3202
3203   if (target_options != 0)
3204     ret = str_comma_list_concat_elem (ret, "unknown???");
3205
3206   if (ret == NULL)
3207     ret = xstrdup ("");
3208   return ret;
3209 }
3210
3211 static void
3212 debug_print_register (const char * func,
3213                       struct regcache *regcache, int regno)
3214 {
3215   struct gdbarch *gdbarch = get_regcache_arch (regcache);
3216
3217   fprintf_unfiltered (gdb_stdlog, "%s ", func);
3218   if (regno >= 0 && regno < gdbarch_num_regs (gdbarch)
3219       && gdbarch_register_name (gdbarch, regno) != NULL
3220       && gdbarch_register_name (gdbarch, regno)[0] != '\0')
3221     fprintf_unfiltered (gdb_stdlog, "(%s)",
3222                         gdbarch_register_name (gdbarch, regno));
3223   else
3224     fprintf_unfiltered (gdb_stdlog, "(%d)", regno);
3225   if (regno >= 0 && regno < gdbarch_num_regs (gdbarch))
3226     {
3227       enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
3228       int i, size = register_size (gdbarch, regno);
3229       gdb_byte buf[MAX_REGISTER_SIZE];
3230
3231       regcache_raw_collect (regcache, regno, buf);
3232       fprintf_unfiltered (gdb_stdlog, " = ");
3233       for (i = 0; i < size; i++)
3234         {
3235           fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
3236         }
3237       if (size <= sizeof (LONGEST))
3238         {
3239           ULONGEST val = extract_unsigned_integer (buf, size, byte_order);
3240
3241           fprintf_unfiltered (gdb_stdlog, " %s %s",
3242                               core_addr_to_string_nz (val), plongest (val));
3243         }
3244     }
3245   fprintf_unfiltered (gdb_stdlog, "\n");
3246 }
3247
3248 void
3249 target_fetch_registers (struct regcache *regcache, int regno)
3250 {
3251   current_target.to_fetch_registers (&current_target, regcache, regno);
3252   if (targetdebug)
3253     debug_print_register ("target_fetch_registers", regcache, regno);
3254 }
3255
3256 void
3257 target_store_registers (struct regcache *regcache, int regno)
3258 {
3259   struct target_ops *t;
3260
3261   if (!may_write_registers)
3262     error (_("Writing to registers is not allowed (regno %d)"), regno);
3263
3264   current_target.to_store_registers (&current_target, regcache, regno);
3265   if (targetdebug)
3266     {
3267       debug_print_register ("target_store_registers", regcache, regno);
3268     }
3269 }
3270
3271 int
3272 target_core_of_thread (ptid_t ptid)
3273 {
3274   int retval = current_target.to_core_of_thread (&current_target, ptid);
3275
3276   if (targetdebug)
3277     fprintf_unfiltered (gdb_stdlog,
3278                         "target_core_of_thread (%d) = %d\n",
3279                         ptid_get_pid (ptid), retval);
3280   return retval;
3281 }
3282
3283 int
3284 simple_verify_memory (struct target_ops *ops,
3285                       const gdb_byte *data, CORE_ADDR lma, ULONGEST size)
3286 {
3287   LONGEST total_xfered = 0;
3288
3289   while (total_xfered < size)
3290     {
3291       ULONGEST xfered_len;
3292       enum target_xfer_status status;
3293       gdb_byte buf[1024];
3294       ULONGEST howmuch = min (sizeof (buf), size - total_xfered);
3295
3296       status = target_xfer_partial (ops, TARGET_OBJECT_MEMORY, NULL,
3297                                     buf, NULL, lma + total_xfered, howmuch,
3298                                     &xfered_len);
3299       if (status == TARGET_XFER_OK
3300           && memcmp (data + total_xfered, buf, xfered_len) == 0)
3301         {
3302           total_xfered += xfered_len;
3303           QUIT;
3304         }
3305       else
3306         return 0;
3307     }
3308   return 1;
3309 }
3310
3311 /* Default implementation of memory verification.  */
3312
3313 static int
3314 default_verify_memory (struct target_ops *self,
3315                        const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
3316 {
3317   /* Start over from the top of the target stack.  */
3318   return simple_verify_memory (current_target.beneath,
3319                                data, memaddr, size);
3320 }
3321
3322 int
3323 target_verify_memory (const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
3324 {
3325   int retval = current_target.to_verify_memory (&current_target,
3326                                                 data, memaddr, size);
3327
3328   if (targetdebug)
3329     fprintf_unfiltered (gdb_stdlog,
3330                         "target_verify_memory (%s, %s) = %d\n",
3331                         paddress (target_gdbarch (), memaddr),
3332                         pulongest (size),
3333                         retval);
3334   return retval;
3335 }
3336
3337 /* The documentation for this function is in its prototype declaration in
3338    target.h.  */
3339
3340 int
3341 target_insert_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask, int rw)
3342 {
3343   int ret;
3344
3345   ret = current_target.to_insert_mask_watchpoint (&current_target,
3346                                                   addr, mask, rw);
3347
3348   if (targetdebug)
3349     fprintf_unfiltered (gdb_stdlog, "\
3350 target_insert_mask_watchpoint (%s, %s, %d) = %d\n",
3351                         core_addr_to_string (addr),
3352                         core_addr_to_string (mask), rw, ret);
3353   
3354   return ret;
3355 }
3356
3357 /* The documentation for this function is in its prototype declaration in
3358    target.h.  */
3359
3360 int
3361 target_remove_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask, int rw)
3362 {
3363   int ret;
3364
3365   ret = current_target.to_remove_mask_watchpoint (&current_target,
3366                                                   addr, mask, rw);
3367
3368   if (targetdebug)
3369     fprintf_unfiltered (gdb_stdlog, "\
3370 target_remove_mask_watchpoint (%s, %s, %d) = %d\n",
3371                         core_addr_to_string (addr),
3372                         core_addr_to_string (mask), rw, ret);
3373
3374   return ret;
3375 }
3376
3377 /* The documentation for this function is in its prototype declaration
3378    in target.h.  */
3379
3380 int
3381 target_masked_watch_num_registers (CORE_ADDR addr, CORE_ADDR mask)
3382 {
3383   return current_target.to_masked_watch_num_registers (&current_target,
3384                                                        addr, mask);
3385 }
3386
3387 /* The documentation for this function is in its prototype declaration
3388    in target.h.  */
3389
3390 int
3391 target_ranged_break_num_registers (void)
3392 {
3393   return current_target.to_ranged_break_num_registers (&current_target);
3394 }
3395
3396 /* See target.h.  */
3397
3398 struct btrace_target_info *
3399 target_enable_btrace (ptid_t ptid)
3400 {
3401   return current_target.to_enable_btrace (&current_target, ptid);
3402 }
3403
3404 /* See target.h.  */
3405
3406 void
3407 target_disable_btrace (struct btrace_target_info *btinfo)
3408 {
3409   current_target.to_disable_btrace (&current_target, btinfo);
3410 }
3411
3412 /* See target.h.  */
3413
3414 void
3415 target_teardown_btrace (struct btrace_target_info *btinfo)
3416 {
3417   current_target.to_teardown_btrace (&current_target, btinfo);
3418 }
3419
3420 /* See target.h.  */
3421
3422 enum btrace_error
3423 target_read_btrace (VEC (btrace_block_s) **btrace,
3424                     struct btrace_target_info *btinfo,
3425                     enum btrace_read_type type)
3426 {
3427   return current_target.to_read_btrace (&current_target, btrace, btinfo, type);
3428 }
3429
3430 /* See target.h.  */
3431
3432 void
3433 target_stop_recording (void)
3434 {
3435   current_target.to_stop_recording (&current_target);
3436 }
3437
3438 /* See target.h.  */
3439
3440 void
3441 target_info_record (void)
3442 {
3443   struct target_ops *t;
3444
3445   for (t = current_target.beneath; t != NULL; t = t->beneath)
3446     if (t->to_info_record != NULL)
3447       {
3448         t->to_info_record (t);
3449         return;
3450       }
3451
3452   tcomplain ();
3453 }
3454
3455 /* See target.h.  */
3456
3457 void
3458 target_save_record (const char *filename)
3459 {
3460   current_target.to_save_record (&current_target, filename);
3461 }
3462
3463 /* See target.h.  */
3464
3465 int
3466 target_supports_delete_record (void)
3467 {
3468   struct target_ops *t;
3469
3470   for (t = current_target.beneath; t != NULL; t = t->beneath)
3471     if (t->to_delete_record != NULL)
3472       return 1;
3473
3474   return 0;
3475 }
3476
3477 /* See target.h.  */
3478
3479 void
3480 target_delete_record (void)
3481 {
3482   current_target.to_delete_record (&current_target);
3483 }
3484
3485 /* See target.h.  */
3486
3487 int
3488 target_record_is_replaying (void)
3489 {
3490   return current_target.to_record_is_replaying (&current_target);
3491 }
3492
3493 /* See target.h.  */
3494
3495 void
3496 target_goto_record_begin (void)
3497 {
3498   current_target.to_goto_record_begin (&current_target);
3499 }
3500
3501 /* See target.h.  */
3502
3503 void
3504 target_goto_record_end (void)
3505 {
3506   current_target.to_goto_record_end (&current_target);
3507 }
3508
3509 /* See target.h.  */
3510
3511 void
3512 target_goto_record (ULONGEST insn)
3513 {
3514   current_target.to_goto_record (&current_target, insn);
3515 }
3516
3517 /* See target.h.  */
3518
3519 void
3520 target_insn_history (int size, int flags)
3521 {
3522   current_target.to_insn_history (&current_target, size, flags);
3523 }
3524
3525 /* See target.h.  */
3526
3527 void
3528 target_insn_history_from (ULONGEST from, int size, int flags)
3529 {
3530   current_target.to_insn_history_from (&current_target, from, size, flags);
3531 }
3532
3533 /* See target.h.  */
3534
3535 void
3536 target_insn_history_range (ULONGEST begin, ULONGEST end, int flags)
3537 {
3538   current_target.to_insn_history_range (&current_target, begin, end, flags);
3539 }
3540
3541 /* See target.h.  */
3542
3543 void
3544 target_call_history (int size, int flags)
3545 {
3546   current_target.to_call_history (&current_target, size, flags);
3547 }
3548
3549 /* See target.h.  */
3550
3551 void
3552 target_call_history_from (ULONGEST begin, int size, int flags)
3553 {
3554   current_target.to_call_history_from (&current_target, begin, size, flags);
3555 }
3556
3557 /* See target.h.  */
3558
3559 void
3560 target_call_history_range (ULONGEST begin, ULONGEST end, int flags)
3561 {
3562   current_target.to_call_history_range (&current_target, begin, end, flags);
3563 }
3564
3565 static void
3566 debug_to_prepare_to_store (struct target_ops *self, struct regcache *regcache)
3567 {
3568   debug_target.to_prepare_to_store (&debug_target, regcache);
3569
3570   fprintf_unfiltered (gdb_stdlog, "target_prepare_to_store ()\n");
3571 }
3572
3573 /* See target.h.  */
3574
3575 const struct frame_unwind *
3576 target_get_unwinder (void)
3577 {
3578   return current_target.to_get_unwinder (&current_target);
3579 }
3580
3581 /* See target.h.  */
3582
3583 const struct frame_unwind *
3584 target_get_tailcall_unwinder (void)
3585 {
3586   return current_target.to_get_tailcall_unwinder (&current_target);
3587 }
3588
3589 /* Default implementation of to_decr_pc_after_break.  */
3590
3591 static CORE_ADDR
3592 default_target_decr_pc_after_break (struct target_ops *ops,
3593                                     struct gdbarch *gdbarch)
3594 {
3595   return gdbarch_decr_pc_after_break (gdbarch);
3596 }
3597
3598 /* See target.h.  */
3599
3600 CORE_ADDR
3601 target_decr_pc_after_break (struct gdbarch *gdbarch)
3602 {
3603   return current_target.to_decr_pc_after_break (&current_target, gdbarch);
3604 }
3605
3606 static void
3607 debug_to_files_info (struct target_ops *target)
3608 {
3609   debug_target.to_files_info (target);
3610
3611   fprintf_unfiltered (gdb_stdlog, "target_files_info (xxx)\n");
3612 }
3613
3614 static int
3615 debug_to_insert_breakpoint (struct target_ops *ops, struct gdbarch *gdbarch,
3616                             struct bp_target_info *bp_tgt)
3617 {
3618   int retval;
3619
3620   retval = debug_target.to_insert_breakpoint (&debug_target, gdbarch, bp_tgt);
3621
3622   fprintf_unfiltered (gdb_stdlog,
3623                       "target_insert_breakpoint (%s, xxx) = %ld\n",
3624                       core_addr_to_string (bp_tgt->placed_address),
3625                       (unsigned long) retval);
3626   return retval;
3627 }
3628
3629 static int
3630 debug_to_remove_breakpoint (struct target_ops *ops, struct gdbarch *gdbarch,
3631                             struct bp_target_info *bp_tgt)
3632 {
3633   int retval;
3634
3635   retval = debug_target.to_remove_breakpoint (&debug_target, gdbarch, bp_tgt);
3636
3637   fprintf_unfiltered (gdb_stdlog,
3638                       "target_remove_breakpoint (%s, xxx) = %ld\n",
3639                       core_addr_to_string (bp_tgt->placed_address),
3640                       (unsigned long) retval);
3641   return retval;
3642 }
3643
3644 static int
3645 debug_to_can_use_hw_breakpoint (struct target_ops *self,
3646                                 int type, int cnt, int from_tty)
3647 {
3648   int retval;
3649
3650   retval = debug_target.to_can_use_hw_breakpoint (&debug_target,
3651                                                   type, cnt, from_tty);
3652
3653   fprintf_unfiltered (gdb_stdlog,
3654                       "target_can_use_hw_breakpoint (%ld, %ld, %ld) = %ld\n",
3655                       (unsigned long) type,
3656                       (unsigned long) cnt,
3657                       (unsigned long) from_tty,
3658                       (unsigned long) retval);
3659   return retval;
3660 }
3661
3662 static int
3663 debug_to_region_ok_for_hw_watchpoint (struct target_ops *self,
3664                                       CORE_ADDR addr, int len)
3665 {
3666   CORE_ADDR retval;
3667
3668   retval = debug_target.to_region_ok_for_hw_watchpoint (&debug_target,
3669                                                         addr, len);
3670
3671   fprintf_unfiltered (gdb_stdlog,
3672                       "target_region_ok_for_hw_watchpoint (%s, %ld) = %s\n",
3673                       core_addr_to_string (addr), (unsigned long) len,
3674                       core_addr_to_string (retval));
3675   return retval;
3676 }
3677
3678 static int
3679 debug_to_can_accel_watchpoint_condition (struct target_ops *self,
3680                                          CORE_ADDR addr, int len, int rw,
3681                                          struct expression *cond)
3682 {
3683   int retval;
3684
3685   retval = debug_target.to_can_accel_watchpoint_condition (&debug_target,
3686                                                            addr, len,
3687                                                            rw, cond);
3688
3689   fprintf_unfiltered (gdb_stdlog,
3690                       "target_can_accel_watchpoint_condition "
3691                       "(%s, %d, %d, %s) = %ld\n",
3692                       core_addr_to_string (addr), len, rw,
3693                       host_address_to_string (cond), (unsigned long) retval);
3694   return retval;
3695 }
3696
3697 static int
3698 debug_to_stopped_by_watchpoint (struct target_ops *ops)
3699 {
3700   int retval;
3701
3702   retval = debug_target.to_stopped_by_watchpoint (&debug_target);
3703
3704   fprintf_unfiltered (gdb_stdlog,
3705                       "target_stopped_by_watchpoint () = %ld\n",
3706                       (unsigned long) retval);
3707   return retval;
3708 }
3709
3710 static int
3711 debug_to_stopped_data_address (struct target_ops *target, CORE_ADDR *addr)
3712 {
3713   int retval;
3714
3715   retval = debug_target.to_stopped_data_address (target, addr);
3716
3717   fprintf_unfiltered (gdb_stdlog,
3718                       "target_stopped_data_address ([%s]) = %ld\n",
3719                       core_addr_to_string (*addr),
3720                       (unsigned long)retval);
3721   return retval;
3722 }
3723
3724 static int
3725 debug_to_watchpoint_addr_within_range (struct target_ops *target,
3726                                        CORE_ADDR addr,
3727                                        CORE_ADDR start, int length)
3728 {
3729   int retval;
3730
3731   retval = debug_target.to_watchpoint_addr_within_range (target, addr,
3732                                                          start, length);
3733
3734   fprintf_filtered (gdb_stdlog,
3735                     "target_watchpoint_addr_within_range (%s, %s, %d) = %d\n",
3736                     core_addr_to_string (addr), core_addr_to_string (start),
3737                     length, retval);
3738   return retval;
3739 }
3740
3741 static int
3742 debug_to_insert_hw_breakpoint (struct target_ops *self,
3743                                struct gdbarch *gdbarch,
3744                                struct bp_target_info *bp_tgt)
3745 {
3746   int retval;
3747
3748   retval = debug_target.to_insert_hw_breakpoint (&debug_target,
3749                                                  gdbarch, bp_tgt);
3750
3751   fprintf_unfiltered (gdb_stdlog,
3752                       "target_insert_hw_breakpoint (%s, xxx) = %ld\n",
3753                       core_addr_to_string (bp_tgt->placed_address),
3754                       (unsigned long) retval);
3755   return retval;
3756 }
3757
3758 static int
3759 debug_to_remove_hw_breakpoint (struct target_ops *self,
3760                                struct gdbarch *gdbarch,
3761                                struct bp_target_info *bp_tgt)
3762 {
3763   int retval;
3764
3765   retval = debug_target.to_remove_hw_breakpoint (&debug_target,
3766                                                  gdbarch, bp_tgt);
3767
3768   fprintf_unfiltered (gdb_stdlog,
3769                       "target_remove_hw_breakpoint (%s, xxx) = %ld\n",
3770                       core_addr_to_string (bp_tgt->placed_address),
3771                       (unsigned long) retval);
3772   return retval;
3773 }
3774
3775 static int
3776 debug_to_insert_watchpoint (struct target_ops *self,
3777                             CORE_ADDR addr, int len, int type,
3778                             struct expression *cond)
3779 {
3780   int retval;
3781
3782   retval = debug_target.to_insert_watchpoint (&debug_target,
3783                                               addr, len, type, cond);
3784
3785   fprintf_unfiltered (gdb_stdlog,
3786                       "target_insert_watchpoint (%s, %d, %d, %s) = %ld\n",
3787                       core_addr_to_string (addr), len, type,
3788                       host_address_to_string (cond), (unsigned long) retval);
3789   return retval;
3790 }
3791
3792 static int
3793 debug_to_remove_watchpoint (struct target_ops *self,
3794                             CORE_ADDR addr, int len, int type,
3795                             struct expression *cond)
3796 {
3797   int retval;
3798
3799   retval = debug_target.to_remove_watchpoint (&debug_target,
3800                                               addr, len, type, cond);
3801
3802   fprintf_unfiltered (gdb_stdlog,
3803                       "target_remove_watchpoint (%s, %d, %d, %s) = %ld\n",
3804                       core_addr_to_string (addr), len, type,
3805                       host_address_to_string (cond), (unsigned long) retval);
3806   return retval;
3807 }
3808
3809 static void
3810 debug_to_terminal_init (struct target_ops *self)
3811 {
3812   debug_target.to_terminal_init (&debug_target);
3813
3814   fprintf_unfiltered (gdb_stdlog, "target_terminal_init ()\n");
3815 }
3816
3817 static void
3818 debug_to_terminal_inferior (struct target_ops *self)
3819 {
3820   debug_target.to_terminal_inferior (&debug_target);
3821
3822   fprintf_unfiltered (gdb_stdlog, "target_terminal_inferior ()\n");
3823 }
3824
3825 static void
3826 debug_to_terminal_ours_for_output (struct target_ops *self)
3827 {
3828   debug_target.to_terminal_ours_for_output (&debug_target);
3829
3830   fprintf_unfiltered (gdb_stdlog, "target_terminal_ours_for_output ()\n");
3831 }
3832
3833 static void
3834 debug_to_terminal_ours (struct target_ops *self)
3835 {
3836   debug_target.to_terminal_ours (&debug_target);
3837
3838   fprintf_unfiltered (gdb_stdlog, "target_terminal_ours ()\n");
3839 }
3840
3841 static void
3842 debug_to_terminal_save_ours (struct target_ops *self)
3843 {
3844   debug_target.to_terminal_save_ours (&debug_target);
3845
3846   fprintf_unfiltered (gdb_stdlog, "target_terminal_save_ours ()\n");
3847 }
3848
3849 static void
3850 debug_to_terminal_info (struct target_ops *self,
3851                         const char *arg, int from_tty)
3852 {
3853   debug_target.to_terminal_info (&debug_target, arg, from_tty);
3854
3855   fprintf_unfiltered (gdb_stdlog, "target_terminal_info (%s, %d)\n", arg,
3856                       from_tty);
3857 }
3858
3859 static void
3860 debug_to_load (struct target_ops *self, char *args, int from_tty)
3861 {
3862   debug_target.to_load (&debug_target, args, from_tty);
3863
3864   fprintf_unfiltered (gdb_stdlog, "target_load (%s, %d)\n", args, from_tty);
3865 }
3866
3867 static void
3868 debug_to_post_startup_inferior (struct target_ops *self, ptid_t ptid)
3869 {
3870   debug_target.to_post_startup_inferior (&debug_target, ptid);
3871
3872   fprintf_unfiltered (gdb_stdlog, "target_post_startup_inferior (%d)\n",
3873                       ptid_get_pid (ptid));
3874 }
3875
3876 static int
3877 debug_to_insert_fork_catchpoint (struct target_ops *self, int pid)
3878 {
3879   int retval;
3880
3881   retval = debug_target.to_insert_fork_catchpoint (&debug_target, pid);
3882
3883   fprintf_unfiltered (gdb_stdlog, "target_insert_fork_catchpoint (%d) = %d\n",
3884                       pid, retval);
3885
3886   return retval;
3887 }
3888
3889 static int
3890 debug_to_remove_fork_catchpoint (struct target_ops *self, int pid)
3891 {
3892   int retval;
3893
3894   retval = debug_target.to_remove_fork_catchpoint (&debug_target, pid);
3895
3896   fprintf_unfiltered (gdb_stdlog, "target_remove_fork_catchpoint (%d) = %d\n",
3897                       pid, retval);
3898
3899   return retval;
3900 }
3901
3902 static int
3903 debug_to_insert_vfork_catchpoint (struct target_ops *self, int pid)
3904 {
3905   int retval;
3906
3907   retval = debug_target.to_insert_vfork_catchpoint (&debug_target, pid);
3908
3909   fprintf_unfiltered (gdb_stdlog, "target_insert_vfork_catchpoint (%d) = %d\n",
3910                       pid, retval);
3911
3912   return retval;
3913 }
3914
3915 static int
3916 debug_to_remove_vfork_catchpoint (struct target_ops *self, int pid)
3917 {
3918   int retval;
3919
3920   retval = debug_target.to_remove_vfork_catchpoint (&debug_target, pid);
3921
3922   fprintf_unfiltered (gdb_stdlog, "target_remove_vfork_catchpoint (%d) = %d\n",
3923                       pid, retval);
3924
3925   return retval;
3926 }
3927
3928 static int
3929 debug_to_insert_exec_catchpoint (struct target_ops *self, int pid)
3930 {
3931   int retval;
3932
3933   retval = debug_target.to_insert_exec_catchpoint (&debug_target, pid);
3934
3935   fprintf_unfiltered (gdb_stdlog, "target_insert_exec_catchpoint (%d) = %d\n",
3936                       pid, retval);
3937
3938   return retval;
3939 }
3940
3941 static int
3942 debug_to_remove_exec_catchpoint (struct target_ops *self, int pid)
3943 {
3944   int retval;
3945
3946   retval = debug_target.to_remove_exec_catchpoint (&debug_target, pid);
3947
3948   fprintf_unfiltered (gdb_stdlog, "target_remove_exec_catchpoint (%d) = %d\n",
3949                       pid, retval);
3950
3951   return retval;
3952 }
3953
3954 static int
3955 debug_to_has_exited (struct target_ops *self,
3956                      int pid, int wait_status, int *exit_status)
3957 {
3958   int has_exited;
3959
3960   has_exited = debug_target.to_has_exited (&debug_target,
3961                                            pid, wait_status, exit_status);
3962
3963   fprintf_unfiltered (gdb_stdlog, "target_has_exited (%d, %d, %d) = %d\n",
3964                       pid, wait_status, *exit_status, has_exited);
3965
3966   return has_exited;
3967 }
3968
3969 static int
3970 debug_to_can_run (struct target_ops *self)
3971 {
3972   int retval;
3973
3974   retval = debug_target.to_can_run (&debug_target);
3975
3976   fprintf_unfiltered (gdb_stdlog, "target_can_run () = %d\n", retval);
3977
3978   return retval;
3979 }
3980
3981 static struct gdbarch *
3982 debug_to_thread_architecture (struct target_ops *ops, ptid_t ptid)
3983 {
3984   struct gdbarch *retval;
3985
3986   retval = debug_target.to_thread_architecture (ops, ptid);
3987
3988   fprintf_unfiltered (gdb_stdlog, 
3989                       "target_thread_architecture (%s) = %s [%s]\n",
3990                       target_pid_to_str (ptid),
3991                       host_address_to_string (retval),
3992                       gdbarch_bfd_arch_info (retval)->printable_name);
3993   return retval;
3994 }
3995
3996 static void
3997 debug_to_stop (struct target_ops *self, ptid_t ptid)
3998 {
3999   debug_target.to_stop (&debug_target, ptid);
4000
4001   fprintf_unfiltered (gdb_stdlog, "target_stop (%s)\n",
4002                       target_pid_to_str (ptid));
4003 }
4004
4005 static void
4006 debug_to_rcmd (struct target_ops *self, char *command,
4007                struct ui_file *outbuf)
4008 {
4009   debug_target.to_rcmd (&debug_target, command, outbuf);
4010   fprintf_unfiltered (gdb_stdlog, "target_rcmd (%s, ...)\n", command);
4011 }
4012
4013 static char *
4014 debug_to_pid_to_exec_file (struct target_ops *self, int pid)
4015 {
4016   char *exec_file;
4017
4018   exec_file = debug_target.to_pid_to_exec_file (&debug_target, pid);
4019
4020   fprintf_unfiltered (gdb_stdlog, "target_pid_to_exec_file (%d) = %s\n",
4021                       pid, exec_file);
4022
4023   return exec_file;
4024 }
4025
4026 static void
4027 setup_target_debug (void)
4028 {
4029   memcpy (&debug_target, &current_target, sizeof debug_target);
4030
4031   current_target.to_open = debug_to_open;
4032   current_target.to_post_attach = debug_to_post_attach;
4033   current_target.to_prepare_to_store = debug_to_prepare_to_store;
4034   current_target.to_files_info = debug_to_files_info;
4035   current_target.to_insert_breakpoint = debug_to_insert_breakpoint;
4036   current_target.to_remove_breakpoint = debug_to_remove_breakpoint;
4037   current_target.to_can_use_hw_breakpoint = debug_to_can_use_hw_breakpoint;
4038   current_target.to_insert_hw_breakpoint = debug_to_insert_hw_breakpoint;
4039   current_target.to_remove_hw_breakpoint = debug_to_remove_hw_breakpoint;
4040   current_target.to_insert_watchpoint = debug_to_insert_watchpoint;
4041   current_target.to_remove_watchpoint = debug_to_remove_watchpoint;
4042   current_target.to_stopped_by_watchpoint = debug_to_stopped_by_watchpoint;
4043   current_target.to_stopped_data_address = debug_to_stopped_data_address;
4044   current_target.to_watchpoint_addr_within_range
4045     = debug_to_watchpoint_addr_within_range;
4046   current_target.to_region_ok_for_hw_watchpoint
4047     = debug_to_region_ok_for_hw_watchpoint;
4048   current_target.to_can_accel_watchpoint_condition
4049     = debug_to_can_accel_watchpoint_condition;
4050   current_target.to_terminal_init = debug_to_terminal_init;
4051   current_target.to_terminal_inferior = debug_to_terminal_inferior;
4052   current_target.to_terminal_ours_for_output
4053     = debug_to_terminal_ours_for_output;
4054   current_target.to_terminal_ours = debug_to_terminal_ours;
4055   current_target.to_terminal_save_ours = debug_to_terminal_save_ours;
4056   current_target.to_terminal_info = debug_to_terminal_info;
4057   current_target.to_load = debug_to_load;
4058   current_target.to_post_startup_inferior = debug_to_post_startup_inferior;
4059   current_target.to_insert_fork_catchpoint = debug_to_insert_fork_catchpoint;
4060   current_target.to_remove_fork_catchpoint = debug_to_remove_fork_catchpoint;
4061   current_target.to_insert_vfork_catchpoint = debug_to_insert_vfork_catchpoint;
4062   current_target.to_remove_vfork_catchpoint = debug_to_remove_vfork_catchpoint;
4063   current_target.to_insert_exec_catchpoint = debug_to_insert_exec_catchpoint;
4064   current_target.to_remove_exec_catchpoint = debug_to_remove_exec_catchpoint;
4065   current_target.to_has_exited = debug_to_has_exited;
4066   current_target.to_can_run = debug_to_can_run;
4067   current_target.to_stop = debug_to_stop;
4068   current_target.to_rcmd = debug_to_rcmd;
4069   current_target.to_pid_to_exec_file = debug_to_pid_to_exec_file;
4070   current_target.to_thread_architecture = debug_to_thread_architecture;
4071 }
4072 \f
4073
4074 static char targ_desc[] =
4075 "Names of targets and files being debugged.\nShows the entire \
4076 stack of targets currently in use (including the exec-file,\n\
4077 core-file, and process, if any), as well as the symbol file name.";
4078
4079 static void
4080 default_rcmd (struct target_ops *self, char *command, struct ui_file *output)
4081 {
4082   error (_("\"monitor\" command not supported by this target."));
4083 }
4084
4085 static void
4086 do_monitor_command (char *cmd,
4087                  int from_tty)
4088 {
4089   target_rcmd (cmd, gdb_stdtarg);
4090 }
4091
4092 /* Print the name of each layers of our target stack.  */
4093
4094 static void
4095 maintenance_print_target_stack (char *cmd, int from_tty)
4096 {
4097   struct target_ops *t;
4098
4099   printf_filtered (_("The current target stack is:\n"));
4100
4101   for (t = target_stack; t != NULL; t = t->beneath)
4102     {
4103       printf_filtered ("  - %s (%s)\n", t->to_shortname, t->to_longname);
4104     }
4105 }
4106
4107 /* Controls if async mode is permitted.  */
4108 int target_async_permitted = 0;
4109
4110 /* The set command writes to this variable.  If the inferior is
4111    executing, target_async_permitted is *not* updated.  */
4112 static int target_async_permitted_1 = 0;
4113
4114 static void
4115 set_target_async_command (char *args, int from_tty,
4116                           struct cmd_list_element *c)
4117 {
4118   if (have_live_inferiors ())
4119     {
4120       target_async_permitted_1 = target_async_permitted;
4121       error (_("Cannot change this setting while the inferior is running."));
4122     }
4123
4124   target_async_permitted = target_async_permitted_1;
4125 }
4126
4127 static void
4128 show_target_async_command (struct ui_file *file, int from_tty,
4129                            struct cmd_list_element *c,
4130                            const char *value)
4131 {
4132   fprintf_filtered (file,
4133                     _("Controlling the inferior in "
4134                       "asynchronous mode is %s.\n"), value);
4135 }
4136
4137 /* Temporary copies of permission settings.  */
4138
4139 static int may_write_registers_1 = 1;
4140 static int may_write_memory_1 = 1;
4141 static int may_insert_breakpoints_1 = 1;
4142 static int may_insert_tracepoints_1 = 1;
4143 static int may_insert_fast_tracepoints_1 = 1;
4144 static int may_stop_1 = 1;
4145
4146 /* Make the user-set values match the real values again.  */
4147
4148 void
4149 update_target_permissions (void)
4150 {
4151   may_write_registers_1 = may_write_registers;
4152   may_write_memory_1 = may_write_memory;
4153   may_insert_breakpoints_1 = may_insert_breakpoints;
4154   may_insert_tracepoints_1 = may_insert_tracepoints;
4155   may_insert_fast_tracepoints_1 = may_insert_fast_tracepoints;
4156   may_stop_1 = may_stop;
4157 }
4158
4159 /* The one function handles (most of) the permission flags in the same
4160    way.  */
4161
4162 static void
4163 set_target_permissions (char *args, int from_tty,
4164                         struct cmd_list_element *c)
4165 {
4166   if (target_has_execution)
4167     {
4168       update_target_permissions ();
4169       error (_("Cannot change this setting while the inferior is running."));
4170     }
4171
4172   /* Make the real values match the user-changed values.  */
4173   may_write_registers = may_write_registers_1;
4174   may_insert_breakpoints = may_insert_breakpoints_1;
4175   may_insert_tracepoints = may_insert_tracepoints_1;
4176   may_insert_fast_tracepoints = may_insert_fast_tracepoints_1;
4177   may_stop = may_stop_1;
4178   update_observer_mode ();
4179 }
4180
4181 /* Set memory write permission independently of observer mode.  */
4182
4183 static void
4184 set_write_memory_permission (char *args, int from_tty,
4185                         struct cmd_list_element *c)
4186 {
4187   /* Make the real values match the user-changed values.  */
4188   may_write_memory = may_write_memory_1;
4189   update_observer_mode ();
4190 }
4191
4192
4193 void
4194 initialize_targets (void)
4195 {
4196   init_dummy_target ();
4197   push_target (&dummy_target);
4198
4199   add_info ("target", target_info, targ_desc);
4200   add_info ("files", target_info, targ_desc);
4201
4202   add_setshow_zuinteger_cmd ("target", class_maintenance, &targetdebug, _("\
4203 Set target debugging."), _("\
4204 Show target debugging."), _("\
4205 When non-zero, target debugging is enabled.  Higher numbers are more\n\
4206 verbose.  Changes do not take effect until the next \"run\" or \"target\"\n\
4207 command."),
4208                              NULL,
4209                              show_targetdebug,
4210                              &setdebuglist, &showdebuglist);
4211
4212   add_setshow_boolean_cmd ("trust-readonly-sections", class_support,
4213                            &trust_readonly, _("\
4214 Set mode for reading from readonly sections."), _("\
4215 Show mode for reading from readonly sections."), _("\
4216 When this mode is on, memory reads from readonly sections (such as .text)\n\
4217 will be read from the object file instead of from the target.  This will\n\
4218 result in significant performance improvement for remote targets."),
4219                            NULL,
4220                            show_trust_readonly,
4221                            &setlist, &showlist);
4222
4223   add_com ("monitor", class_obscure, do_monitor_command,
4224            _("Send a command to the remote monitor (remote targets only)."));
4225
4226   add_cmd ("target-stack", class_maintenance, maintenance_print_target_stack,
4227            _("Print the name of each layer of the internal target stack."),
4228            &maintenanceprintlist);
4229
4230   add_setshow_boolean_cmd ("target-async", no_class,
4231                            &target_async_permitted_1, _("\
4232 Set whether gdb controls the inferior in asynchronous mode."), _("\
4233 Show whether gdb controls the inferior in asynchronous mode."), _("\
4234 Tells gdb whether to control the inferior in asynchronous mode."),
4235                            set_target_async_command,
4236                            show_target_async_command,
4237                            &setlist,
4238                            &showlist);
4239
4240   add_setshow_boolean_cmd ("may-write-registers", class_support,
4241                            &may_write_registers_1, _("\
4242 Set permission to write into registers."), _("\
4243 Show permission to write into registers."), _("\
4244 When this permission is on, GDB may write into the target's registers.\n\
4245 Otherwise, any sort of write attempt will result in an error."),
4246                            set_target_permissions, NULL,
4247                            &setlist, &showlist);
4248
4249   add_setshow_boolean_cmd ("may-write-memory", class_support,
4250                            &may_write_memory_1, _("\
4251 Set permission to write into target memory."), _("\
4252 Show permission to write into target memory."), _("\
4253 When this permission is on, GDB may write into the target's memory.\n\
4254 Otherwise, any sort of write attempt will result in an error."),
4255                            set_write_memory_permission, NULL,
4256                            &setlist, &showlist);
4257
4258   add_setshow_boolean_cmd ("may-insert-breakpoints", class_support,
4259                            &may_insert_breakpoints_1, _("\
4260 Set permission to insert breakpoints in the target."), _("\
4261 Show permission to insert breakpoints in the target."), _("\
4262 When this permission is on, GDB may insert breakpoints in the program.\n\
4263 Otherwise, any sort of insertion attempt will result in an error."),
4264                            set_target_permissions, NULL,
4265                            &setlist, &showlist);
4266
4267   add_setshow_boolean_cmd ("may-insert-tracepoints", class_support,
4268                            &may_insert_tracepoints_1, _("\
4269 Set permission to insert tracepoints in the target."), _("\
4270 Show permission to insert tracepoints in the target."), _("\
4271 When this permission is on, GDB may insert tracepoints in the program.\n\
4272 Otherwise, any sort of insertion attempt will result in an error."),
4273                            set_target_permissions, NULL,
4274                            &setlist, &showlist);
4275
4276   add_setshow_boolean_cmd ("may-insert-fast-tracepoints", class_support,
4277                            &may_insert_fast_tracepoints_1, _("\
4278 Set permission to insert fast tracepoints in the target."), _("\
4279 Show permission to insert fast tracepoints in the target."), _("\
4280 When this permission is on, GDB may insert fast tracepoints.\n\
4281 Otherwise, any sort of insertion attempt will result in an error."),
4282                            set_target_permissions, NULL,
4283                            &setlist, &showlist);
4284
4285   add_setshow_boolean_cmd ("may-interrupt", class_support,
4286                            &may_stop_1, _("\
4287 Set permission to interrupt or signal the target."), _("\
4288 Show permission to interrupt or signal the target."), _("\
4289 When this permission is on, GDB may interrupt/stop the target's execution.\n\
4290 Otherwise, any attempt to interrupt or stop will be ignored."),
4291                            set_target_permissions, NULL,
4292                            &setlist, &showlist);
4293
4294   add_setshow_boolean_cmd ("auto-connect-native-target", class_support,
4295                            &auto_connect_native_target, _("\
4296 Set whether GDB may automatically connect to the native target."), _("\
4297 Show whether GDB may automatically connect to the native target."), _("\
4298 When on, and GDB is not connected to a target yet, GDB\n\
4299 attempts \"run\" and other commands with the native target."),
4300                            NULL, show_auto_connect_native_target,
4301                            &setlist, &showlist);
4302 }