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