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