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