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