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