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