GDB (xrefs)
/tmp/gdb-8.1/gdb/target.h
Go to the documentation of this file.
1 /* Interface between GDB and target environments, including files and processes
2 
3  Copyright (C) 1990-2018 Free Software Foundation, Inc.
4 
5  Contributed by Cygnus Support. Written by John Gilmore.
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 #if !defined (TARGET_H)
23 #define TARGET_H
24 
25 struct objfile;
26 struct ui_file;
27 struct mem_attrib;
28 struct target_ops;
29 struct bp_location;
30 struct bp_target_info;
31 struct regcache;
34 struct trace_status;
35 struct uploaded_tsv;
36 struct uploaded_tp;
38 struct traceframe_info;
39 struct expression;
40 struct dcache_struct;
41 struct inferior;
42 
43 #include "infrun.h" /* For enum exec_direction_kind. */
44 #include "breakpoint.h" /* For enum bptype. */
45 #include "common/scoped_restore.h"
46 
47 /* This include file defines the interface between the main part
48  of the debugger, and the part which is target-specific, or
49  specific to the communications interface between us and the
50  target.
51 
52  A TARGET is an interface between the debugger and a particular
53  kind of file or process. Targets can be STACKED in STRATA,
54  so that more than one target can potentially respond to a request.
55  In particular, memory accesses will walk down the stack of targets
56  until they find a target that is interested in handling that particular
57  address. STRATA are artificial boundaries on the stack, within
58  which particular kinds of targets live. Strata exist so that
59  people don't get confused by pushing e.g. a process target and then
60  a file target, and wondering why they can't see the current values
61  of variables any more (the file target is handling them and they
62  never get to the process target). So when you push a file target,
63  it goes into the file stratum, which is always below the process
64  stratum. */
65 
66 #include "target/target.h"
67 #include "target/resume.h"
68 #include "target/wait.h"
69 #include "target/waitstatus.h"
70 #include "bfd.h"
71 #include "symtab.h"
72 #include "memattr.h"
73 #include "vec.h"
74 #include "gdb_signals.h"
75 #include "btrace.h"
76 #include "record.h"
77 #include "command.h"
78 #include "disasm.h"
79 #include "tracepoint.h"
80 
81 #include "break-common.h" /* For enum target_hw_bp_type. */
82 
83 enum strata
84  {
85  dummy_stratum, /* The lowest of the low */
86  file_stratum, /* Executable files, etc */
87  process_stratum, /* Executing processes or core dump files */
88  thread_stratum, /* Executing threads */
89  record_stratum, /* Support record debugging */
90  arch_stratum /* Architecture overrides */
91  };
92 
94  {
95  tc_none = 0, /* Default: can't control thread execution. */
96  tc_schedlock = 1, /* Can lock the thread scheduler. */
97  };
98 
99 /* The structure below stores information about a system call.
100  It is basically used in the "catch syscall" command, and in
101  every function that gives information about a system call.
102 
103  It's also good to mention that its fields represent everything
104  that we currently know about a syscall in GDB. */
105 struct syscall
106  {
107  /* The syscall number. */
108  int number;
109 
110  /* The syscall name. */
111  const char *name;
112  };
113 
114 /* Return a pretty printed form of TARGET_OPTIONS.
115  Space for the result is malloc'd, caller must free. */
116 extern char *target_options_to_string (int target_options);
117 
118 /* Possible types of events that the inferior handler will have to
119  deal with. */
121  {
122  /* Process a normal inferior event which will result in target_wait
123  being called. */
125  /* We are called to do stuff after the inferior stops. */
127  };
128 
129 /* Target objects which can be transfered using target_read,
130  target_write, et cetera. */
131 
133 {
134  /* AVR target specific transfer. See "avr-tdep.c" and "remote.c". */
136  /* SPU target specific transfer. See "spu-tdep.c". */
138  /* Transfer up-to LEN bytes of memory starting at OFFSET. */
140  /* Memory, avoiding GDB's data cache and trusting the executable.
141  Target implementations of to_xfer_partial never need to handle
142  this object, and most callers should not use it. */
144  /* Memory known to be part of the target's stack. This is cached even
145  if it is not in a region marked as such, since it is known to be
146  "normal" RAM. */
148  /* Memory known to be part of the target code. This is cached even
149  if it is not in a region marked as such. */
151  /* Kernel Unwind Table. See "ia64-tdep.c". */
153  /* Transfer auxilliary vector. */
155  /* StackGhost cookie. See "sparc-tdep.c". */
157  /* Target memory map in XML format. */
159  /* Flash memory. This object can be used to write contents to
160  a previously erased flash memory. Using it without erasing
161  flash can have unexpected results. Addresses are physical
162  address on target, and not relative to flash start. */
164  /* Available target-specific features, e.g. registers and coprocessors.
165  See "target-descriptions.c". ANNEX should never be empty. */
167  /* Currently loaded libraries, in XML format. */
169  /* Currently loaded libraries specific for SVR4 systems, in XML format. */
171  /* Currently loaded libraries specific to AIX systems, in XML format. */
173  /* Get OS specific data. The ANNEX specifies the type (running
174  processes, etc.). The data being transfered is expected to follow
175  the DTD specified in features/osdata.dtd. */
177  /* Extra signal info. Usually the contents of `siginfo_t' on unix
178  platforms. */
180  /* The list of threads that are being debugged. */
182  /* Collected static trace data. */
184  /* Traceframe info, in XML format. */
186  /* Load maps for FDPIC systems. */
188  /* Darwin dynamic linker info data. */
190  /* OpenVMS Unwind Information Block. */
192  /* Branch trace data, in XML format. */
194  /* Branch trace configuration, in XML format. */
196  /* The pathname of the executable file that was run to create
197  a specified process. ANNEX should be a string representation
198  of the process ID of the process in question, in hexadecimal
199  format. */
201  /* Possible future objects: TARGET_OBJECT_FILE, ... */
202 };
203 
204 /* Possible values returned by target_xfer_partial, etc. */
205 
207 {
208  /* Some bytes are transferred. */
210 
211  /* No further transfer is possible. */
213 
214  /* The piece of the object requested is unavailable. */
216 
217  /* Generic I/O error. Note that it's important that this is '-1',
218  as we still have target_xfer-related code returning hardcoded
219  '-1' on error. */
221 
222  /* Keep list in sync with target_xfer_status_to_string. */
223 };
224 
225 /* Return the string form of STATUS. */
226 
227 extern const char *
229 
232 
233 typedef enum target_xfer_status
235  enum target_object object,
236  const char *annex,
237  gdb_byte *readbuf,
238  const gdb_byte *writebuf,
240  ULONGEST len,
241  ULONGEST *xfered_len);
242 
244  raw_memory_xfer_partial (struct target_ops *ops, gdb_byte *readbuf,
245  const gdb_byte *writebuf, ULONGEST memaddr,
246  LONGEST len, ULONGEST *xfered_len);
247 
248 /* Request that OPS transfer up to LEN addressable units of the target's
249  OBJECT. When reading from a memory object, the size of an addressable unit
250  is architecture dependent and can be found using
251  gdbarch_addressable_memory_unit_size. Otherwise, an addressable unit is 1
252  byte long. BUF should point to a buffer large enough to hold the read data,
253  taking into account the addressable unit size. The OFFSET, for a seekable
254  object, specifies the starting point. The ANNEX can be used to provide
255  additional data-specific information to the target.
256 
257  Return the number of addressable units actually transferred, or a negative
258  error code (an 'enum target_xfer_error' value) if the transfer is not
259  supported or otherwise fails. Return of a positive value less than
260  LEN indicates that no further transfer is possible. Unlike the raw
261  to_xfer_partial interface, callers of these functions do not need
262  to retry partial transfers. */
263 
264 extern LONGEST target_read (struct target_ops *ops,
265  enum target_object object,
266  const char *annex, gdb_byte *buf,
267  ULONGEST offset, LONGEST len);
268 
270 {
273  : begin (begin_),
274  end (end_),
275  data (std::move (data_))
276  {
277  }
278 
279  ~memory_read_result () = default;
280 
281  memory_read_result (memory_read_result &&other) = default;
282 
284 
285  /* First address that was read. */
287  /* Past-the-end address. */
289  /* The data. */
291 };
292 
293 extern std::vector<memory_read_result> read_memory_robust
294  (struct target_ops *ops, const ULONGEST offset, const LONGEST len);
295 
296 /* Request that OPS transfer up to LEN addressable units from BUF to the
297  target's OBJECT. When writing to a memory object, the addressable unit
298  size is architecture dependent and can be found using
299  gdbarch_addressable_memory_unit_size. Otherwise, an addressable unit is 1
300  byte long. The OFFSET, for a seekable object, specifies the starting point.
301  The ANNEX can be used to provide additional data-specific information to
302  the target.
303 
304  Return the number of addressable units actually transferred, or a negative
305  error code (an 'enum target_xfer_status' value) if the transfer is not
306  supported or otherwise fails. Return of a positive value less than
307  LEN indicates that no further transfer is possible. Unlike the raw
308  to_xfer_partial interface, callers of these functions do not need to
309  retry partial transfers. */
310 
311 extern LONGEST target_write (struct target_ops *ops,
312  enum target_object object,
313  const char *annex, const gdb_byte *buf,
314  ULONGEST offset, LONGEST len);
315 
316 /* Similar to target_write, except that it also calls PROGRESS with
317  the number of bytes written and the opaque BATON after every
318  successful partial write (and before the first write). This is
319  useful for progress reporting and user interaction while writing
320  data. To abort the transfer, the progress callback can throw an
321  exception. */
322 
324  enum target_object object,
325  const char *annex, const gdb_byte *buf,
326  ULONGEST offset, LONGEST len,
327  void (*progress) (ULONGEST, void *),
328  void *baton);
329 
330 /* Wrapper to perform a full read of unknown size. OBJECT/ANNEX will
331  be read using OPS. The return value will be -1 if the transfer
332  fails or is not supported; 0 if the object is empty; or the length
333  of the object otherwise. If a positive value is returned, a
334  sufficiently large buffer will be allocated using xmalloc and
335  returned in *BUF_P containing the contents of the object.
336 
337  This method should be used for objects sufficiently small to store
338  in a single xmalloc'd buffer, when no fixed bound on the object's
339  size is known in advance. Don't try to read TARGET_OBJECT_MEMORY
340  through this function. */
341 
342 extern LONGEST target_read_alloc (struct target_ops *ops,
343  enum target_object object,
344  const char *annex, gdb_byte **buf_p);
345 
346 /* Read OBJECT/ANNEX using OPS. The result is NUL-terminated and
347  returned as a string. If an error occurs or the transfer is
348  unsupported, NULL is returned. Empty objects are returned as
349  allocated but empty strings. A warning is issued if the result
350  contains any embedded NUL bytes. */
351 
353  (struct target_ops *ops, enum target_object object, const char *annex);
354 
355 /* See target_ops->to_xfer_partial. */
357 
358 /* Wrappers to target read/write that perform memory transfers. They
359  throw an error if the memory transfer fails.
360 
361  NOTE: cagney/2003-10-23: The naming schema is lifted from
362  "frame.h". The parameter order is lifted from get_frame_memory,
363  which in turn lifted it from read_memory. */
364 
365 extern void get_target_memory (struct target_ops *ops, CORE_ADDR addr,
366  gdb_byte *buf, LONGEST len);
368  CORE_ADDR addr, int len,
369  enum bfd_endian byte_order);
370 
371 struct thread_info; /* fwd decl for parameter list below: */
372 
373 /* The type of the callback to the to_async method. */
374 
375 typedef void async_callback_ftype (enum inferior_event_type event_type,
376  void *context);
377 
378 /* Normally target debug printing is purely type-based. However,
379  sometimes it is necessary to override the debug printing on a
380  per-argument basis. This macro can be used, attribute-style, to
381  name the target debug printing function for a particular method
382  argument. FUNC is the name of the function. The macro's
383  definition is empty because it is only used by the
384  make-target-delegates script. */
385 
386 #define TARGET_DEBUG_PRINTER(FUNC)
387 
388 /* These defines are used to mark target_ops methods. The script
389  make-target-delegates scans these and auto-generates the base
390  method implementations. There are four macros that can be used:
391 
392  1. TARGET_DEFAULT_IGNORE. There is no argument. The base method
393  does nothing. This is only valid if the method return type is
394  'void'.
395 
396  2. TARGET_DEFAULT_NORETURN. The argument is a function call, like
397  'tcomplain ()'. The base method simply makes this call, which is
398  assumed not to return.
399 
400  3. TARGET_DEFAULT_RETURN. The argument is a C expression. The
401  base method returns this expression's value.
402 
403  4. TARGET_DEFAULT_FUNC. The argument is the name of a function.
404  make-target-delegates does not generate a base method in this case,
405  but instead uses the argument function as the base method. */
406 
407 #define TARGET_DEFAULT_IGNORE()
408 #define TARGET_DEFAULT_NORETURN(ARG)
409 #define TARGET_DEFAULT_RETURN(ARG)
410 #define TARGET_DEFAULT_FUNC(ARG)
411 
413  {
414  struct target_ops *beneath; /* To the target under this one. */
415  const char *to_shortname; /* Name this target type */
416  const char *to_longname; /* Name for printing */
417  const char *to_doc; /* Documentation. Does not include trailing
418  newline, and starts with a one-line descrip-
419  tion (probably similar to to_longname). */
420  /* Per-target scratch pad. */
421  void *to_data;
422  /* The open routine takes the rest of the parameters from the
423  command, and (if successful) pushes a new target onto the
424  stack. Targets should supply this routine, if only to provide
425  an error message. */
426  void (*to_open) (const char *, int);
427  /* Old targets with a static target vector provide "to_close".
428  New re-entrant targets provide "to_xclose" and that is expected
429  to xfree everything (including the "struct target_ops"). */
430  void (*to_xclose) (struct target_ops *targ);
431  void (*to_close) (struct target_ops *);
432  /* Attaches to a process on the target side. Arguments are as
433  passed to the `attach' command by the user. This routine can
434  be called when the target is not on the target-stack, if the
435  target_can_run routine returns 1; in that case, it must push
436  itself onto the stack. Upon exit, the target should be ready
437  for normal operations, and should be ready to deliver the
438  status of the process immediately (without waiting) to an
439  upcoming target_wait call. */
440  void (*to_attach) (struct target_ops *ops, const char *, int);
441  void (*to_post_attach) (struct target_ops *, int)
443  void (*to_detach) (struct target_ops *ops, const char *, int)
445  void (*to_disconnect) (struct target_ops *, const char *, int)
447  void (*to_resume) (struct target_ops *, ptid_t,
449  enum gdb_signal)
451  void (*to_commit_resume) (struct target_ops *)
453  ptid_t (*to_wait) (struct target_ops *,
454  ptid_t, struct target_waitstatus *,
457  void (*to_fetch_registers) (struct target_ops *, struct regcache *, int)
459  void (*to_store_registers) (struct target_ops *, struct regcache *, int)
461  void (*to_prepare_to_store) (struct target_ops *, struct regcache *)
463 
464  void (*to_files_info) (struct target_ops *)
466  int (*to_insert_breakpoint) (struct target_ops *, struct gdbarch *,
467  struct bp_target_info *)
469  int (*to_remove_breakpoint) (struct target_ops *, struct gdbarch *,
470  struct bp_target_info *,
471  enum remove_bp_reason)
473 
474  /* Returns true if the target stopped because it executed a
475  software breakpoint. This is necessary for correct background
476  execution / non-stop mode operation, and for correct PC
477  adjustment on targets where the PC needs to be adjusted when a
478  software breakpoint triggers. In these modes, by the time GDB
479  processes a breakpoint event, the breakpoint may already be
480  done from the target, so GDB needs to be able to tell whether
481  it should ignore the event and whether it should adjust the PC.
482  See adjust_pc_after_break. */
485  /* Returns true if the above method is supported. */
488 
489  /* Returns true if the target stopped for a hardware breakpoint.
490  Likewise, if the target supports hardware breakpoints, this
491  method is necessary for correct background execution / non-stop
492  mode operation. Even though hardware breakpoints do not
493  require PC adjustment, GDB needs to be able to tell whether the
494  hardware breakpoint event is a delayed event for a breakpoint
495  that is already gone and should thus be ignored. */
498  /* Returns true if the above method is supported. */
501 
503  enum bptype, int, int)
508  struct gdbarch *, struct bp_target_info *)
511  struct gdbarch *, struct bp_target_info *)
513 
514  /* Documentation of what the two routines below are expected to do is
515  provided with the corresponding target_* macros. */
516  int (*to_remove_watchpoint) (struct target_ops *, CORE_ADDR, int,
517  enum target_hw_bp_type, struct expression *)
519  int (*to_insert_watchpoint) (struct target_ops *, CORE_ADDR, int,
520  enum target_hw_bp_type, struct expression *)
522 
525  enum target_hw_bp_type)
529  enum target_hw_bp_type)
538  CORE_ADDR, CORE_ADDR, int)
540 
541  /* Documentation of this routine is provided with the corresponding
542  target_* macro. */
544  CORE_ADDR, int)
546 
548  CORE_ADDR, int, int,
549  struct expression *)
554 
555  /* Return 1 for sure target can do single step. Return -1 for
556  unknown. Return 0 for target can't do. */
559 
560  void (*to_terminal_init) (struct target_ops *)
562  void (*to_terminal_inferior) (struct target_ops *)
566  void (*to_terminal_ours) (struct target_ops *)
568  void (*to_terminal_info) (struct target_ops *, const char *, int)
570  void (*to_kill) (struct target_ops *)
572  void (*to_load) (struct target_ops *, const char *, int)
574  /* Start an inferior process and set inferior_ptid to its pid.
575  EXEC_FILE is the file to run.
576  ALLARGS is a string containing the arguments to the program.
577  ENV is the environment vector to pass. Errors reported with error().
578  On VxWorks and various standalone systems, we ignore exec_file. */
579  void (*to_create_inferior) (struct target_ops *,
580  const char *, const std::string &,
581  char **, int);
584  int (*to_insert_fork_catchpoint) (struct target_ops *, int)
586  int (*to_remove_fork_catchpoint) (struct target_ops *, int)
588  int (*to_insert_vfork_catchpoint) (struct target_ops *, int)
590  int (*to_remove_vfork_catchpoint) (struct target_ops *, int)
592  int (*to_follow_fork) (struct target_ops *, int, int)
594  int (*to_insert_exec_catchpoint) (struct target_ops *, int)
596  int (*to_remove_exec_catchpoint) (struct target_ops *, int)
598  void (*to_follow_exec) (struct target_ops *, struct inferior *, char *)
601  int, bool, int,
604  int (*to_has_exited) (struct target_ops *, int, int, int *)
606  void (*to_mourn_inferior) (struct target_ops *)
608  /* Note that to_can_run is special and can be invoked on an
609  unpushed target. Targets defining this method must also define
610  to_can_async_p and to_supports_non_stop. */
611  int (*to_can_run) (struct target_ops *)
613 
614  /* Documentation of this routine is provided with the corresponding
615  target_* macro. */
616  void (*to_pass_signals) (struct target_ops *, int,
619 
620  /* Documentation of this routine is provided with the
621  corresponding target_* function. */
622  void (*to_program_signals) (struct target_ops *, int,
625 
626  int (*to_thread_alive) (struct target_ops *, ptid_t ptid)
630  const char *(*to_pid_to_str) (struct target_ops *, ptid_t)
632  const char *(*to_extra_thread_info) (struct target_ops *, struct thread_info *)
633  TARGET_DEFAULT_RETURN (NULL);
634  const char *(*to_thread_name) (struct target_ops *, struct thread_info *)
635  TARGET_DEFAULT_RETURN (NULL);
636  struct thread_info *(*to_thread_handle_to_thread_info) (struct target_ops *,
637  const gdb_byte *,
638  int,
639  struct inferior *inf)
640  TARGET_DEFAULT_RETURN (NULL);
641  void (*to_stop) (struct target_ops *, ptid_t)
643  void (*to_interrupt) (struct target_ops *, ptid_t)
645  void (*to_pass_ctrlc) (struct target_ops *)
647  void (*to_rcmd) (struct target_ops *,
648  const char *command, struct ui_file *output)
650  char *(*to_pid_to_exec_file) (struct target_ops *, int pid)
651  TARGET_DEFAULT_RETURN (NULL);
652  void (*to_log_command) (struct target_ops *, const char *)
654  struct target_section_table *(*to_get_section_table) (struct target_ops *)
655  TARGET_DEFAULT_RETURN (NULL);
657  int (*to_has_all_memory) (struct target_ops *);
658  int (*to_has_memory) (struct target_ops *);
659  int (*to_has_stack) (struct target_ops *);
660  int (*to_has_registers) (struct target_ops *);
661  int (*to_has_execution) (struct target_ops *, ptid_t);
662  int to_has_thread_control; /* control thread execution */
664  /* This method must be implemented in some situations. See the
665  comment on 'to_can_run'. */
666  int (*to_can_async_p) (struct target_ops *)
668  int (*to_is_async_p) (struct target_ops *)
670  void (*to_async) (struct target_ops *, int)
672  void (*to_thread_events) (struct target_ops *, int)
674  /* This method must be implemented in some situations. See the
675  comment on 'to_can_run'. */
678  /* Return true if the target operates in non-stop mode even with
679  "set non-stop off". */
682  /* find_memory_regions support method for gcore */
684  find_memory_region_ftype func, void *data)
686  /* make_corefile_notes support method for gcore */
687  char * (*to_make_corefile_notes) (struct target_ops *, bfd *, int *)
689  /* get_bookmark support method for bookmarks */
690  gdb_byte * (*to_get_bookmark) (struct target_ops *, const char *, int)
692  /* goto_bookmark support method for bookmarks */
693  void (*to_goto_bookmark) (struct target_ops *, const gdb_byte *, int)
695  /* Return the thread-local address at OFFSET in the
696  thread-local storage for the thread PTID and the shared library
697  or executable file given by OBJFILE. If that block of
698  thread-local storage hasn't been allocated yet, this function
699  may return an error. LOAD_MODULE_ADDR may be zero for statically
700  linked multithreaded inferiors. */
702  ptid_t ptid,
703  CORE_ADDR load_module_addr,
706 
707  /* Request that OPS transfer up to LEN addressable units of the target's
708  OBJECT. When reading from a memory object, the size of an addressable
709  unit is architecture dependent and can be found using
710  gdbarch_addressable_memory_unit_size. Otherwise, an addressable unit is
711  1 byte long. The OFFSET, for a seekable object, specifies the
712  starting point. The ANNEX can be used to provide additional
713  data-specific information to the target.
714 
715  Return the transferred status, error or OK (an
716  'enum target_xfer_status' value). Save the number of addressable units
717  actually transferred in *XFERED_LEN if transfer is successful
718  (TARGET_XFER_OK) or the number unavailable units if the requested
719  data is unavailable (TARGET_XFER_UNAVAILABLE). *XFERED_LEN
720  smaller than LEN does not indicate the end of the object, only
721  the end of the transfer; higher level code should continue
722  transferring if desired. This is handled in target.c.
723 
724  The interface does not support a "retry" mechanism. Instead it
725  assumes that at least one addressable unit will be transfered on each
726  successful call.
727 
728  NOTE: cagney/2003-10-17: The current interface can lead to
729  fragmented transfers. Lower target levels should not implement
730  hacks, such as enlarging the transfer, in an attempt to
731  compensate for this. Instead, the target stack should be
732  extended so that it implements supply/collect methods and a
733  look-aside object cache. With that available, the lowest
734  target can safely and freely "push" data up the stack.
735 
736  See target_read and target_write for more information. One,
737  and only one, of readbuf or writebuf must be non-NULL. */
738 
740  enum target_object object,
741  const char *annex,
742  gdb_byte *readbuf,
743  const gdb_byte *writebuf,
744  ULONGEST offset, ULONGEST len,
745  ULONGEST *xfered_len)
747 
748  /* Return the limit on the size of any single memory transfer
749  for the target. */
750 
753 
754  /* Returns the memory map for the target. A return value of NULL
755  means that no memory map is available. If a memory address
756  does not fall within any returned regions, it's assumed to be
757  RAM. The returned memory regions should not overlap.
758 
759  The order of regions does not matter; target_memory_map will
760  sort regions by starting address. For that reason, this
761  function should not be called directly except via
762  target_memory_map.
763 
764  This method should not cache data; if the memory map could
765  change unexpectedly, it should be invalidated, and higher
766  layers will re-fetch it. */
767  std::vector<mem_region> (*to_memory_map) (struct target_ops *)
768  TARGET_DEFAULT_RETURN (std::vector<mem_region> ());
769 
770  /* Erases the region of flash memory starting at ADDRESS, of
771  length LENGTH.
772 
773  Precondition: both ADDRESS and ADDRESS+LENGTH should be aligned
774  on flash block boundaries, as reported by 'to_memory_map'. */
775  void (*to_flash_erase) (struct target_ops *,
776  ULONGEST address, LONGEST length)
778 
779  /* Finishes a flash memory write sequence. After this operation
780  all flash memory should be available for writing and the result
781  of reading from areas written by 'to_flash_write' should be
782  equal to what was written. */
783  void (*to_flash_done) (struct target_ops *)
785 
786  /* Describe the architecture-specific features of this target. If
787  OPS doesn't have a description, this should delegate to the
788  "beneath" target. Returns the description found, or NULL if no
789  description was available. */
790  const struct target_desc *(*to_read_description) (struct target_ops *ops)
791  TARGET_DEFAULT_RETURN (NULL);
792 
793  /* Build the PTID of the thread on which a given task is running,
794  based on LWP and THREAD. These values are extracted from the
795  task Private_Data section of the Ada Task Control Block, and
796  their interpretation depends on the target. */
798  long lwp, long thread)
800 
801  /* Read one auxv entry from *READPTR, not reading locations >= ENDPTR.
802  Return 0 if *READPTR is already at the end of the buffer.
803  Return -1 if there is insufficient buffer for a whole entry.
804  Return 1 if an entry was read into *TYPEP and *VALP. */
805  int (*to_auxv_parse) (struct target_ops *ops, gdb_byte **readptr,
806  gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
808 
809  /* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the
810  sequence of bytes in PATTERN with length PATTERN_LEN.
811 
812  The result is 1 if found, 0 if not found, and -1 if there was an error
813  requiring halting of the search (e.g. memory read error).
814  If the pattern is found the address is recorded in FOUND_ADDRP. */
815  int (*to_search_memory) (struct target_ops *ops,
816  CORE_ADDR start_addr, ULONGEST search_space_len,
817  const gdb_byte *pattern, ULONGEST pattern_len,
818  CORE_ADDR *found_addrp)
820 
821  /* Can target execute in reverse? */
824 
825  /* The direction the target is currently executing. Must be
826  implemented on targets that support reverse execution and async
827  mode. The default simply returns forward execution. */
830 
831  /* Does this target support debugging multiple processes
832  simultaneously? */
835 
836  /* Does this target support enabling and disabling tracepoints while a trace
837  experiment is running? */
840 
841  /* Does this target support disabling address space randomization? */
843 
844  /* Does this target support the tracenz bytecode for string collection? */
847 
848  /* Does this target support evaluation of breakpoint conditions on its
849  end? */
852 
853  /* Does this target support evaluation of breakpoint commands on its
854  end? */
857 
858  /* Determine current architecture of thread PTID.
859 
860  The target is supposed to determine the architecture of the code where
861  the target is currently stopped at (on Cell, if a target is in spu_run,
862  to_thread_architecture would return SPU, otherwise PPC32 or PPC64).
863  This is architecture used to perform decr_pc_after_break adjustment,
864  and also determines the frame architecture of the innermost frame.
865  ptrace operations need to operate according to target_gdbarch ().
866 
867  The default implementation always returns target_gdbarch (). */
868  struct gdbarch *(*to_thread_architecture) (struct target_ops *, ptid_t)
870 
871  /* Determine current address space of thread PTID.
872 
873  The default implementation always returns the inferior's
874  address space. */
875  struct address_space *(*to_thread_address_space) (struct target_ops *,
876  ptid_t)
878 
879  /* Target file operations. */
880 
881  /* Return nonzero if the filesystem seen by the current inferior
882  is the local filesystem, zero otherwise. */
885 
886  /* Open FILENAME on the target, in the filesystem as seen by INF,
887  using FLAGS and MODE. If INF is NULL, use the filesystem seen
888  by the debugger (GDB or, for remote targets, the remote stub).
889  If WARN_IF_SLOW is nonzero, print a warning message if the file
890  is being accessed over a link that may be slow. Return a
891  target file descriptor, or -1 if an error occurs (and set
892  *TARGET_ERRNO). */
893  int (*to_fileio_open) (struct target_ops *,
894  struct inferior *inf, const char *filename,
895  int flags, int mode, int warn_if_slow,
896  int *target_errno);
897 
898  /* Write up to LEN bytes from WRITE_BUF to FD on the target.
899  Return the number of bytes written, or -1 if an error occurs
900  (and set *TARGET_ERRNO). */
901  int (*to_fileio_pwrite) (struct target_ops *,
902  int fd, const gdb_byte *write_buf, int len,
903  ULONGEST offset, int *target_errno);
904 
905  /* Read up to LEN bytes FD on the target into READ_BUF.
906  Return the number of bytes read, or -1 if an error occurs
907  (and set *TARGET_ERRNO). */
908  int (*to_fileio_pread) (struct target_ops *,
909  int fd, gdb_byte *read_buf, int len,
910  ULONGEST offset, int *target_errno);
911 
912  /* Get information about the file opened as FD and put it in
913  SB. Return 0 on success, or -1 if an error occurs (and set
914  *TARGET_ERRNO). */
915  int (*to_fileio_fstat) (struct target_ops *,
916  int fd, struct stat *sb, int *target_errno);
917 
918  /* Close FD on the target. Return 0, or -1 if an error occurs
919  (and set *TARGET_ERRNO). */
920  int (*to_fileio_close) (struct target_ops *, int fd, int *target_errno);
921 
922  /* Unlink FILENAME on the target, in the filesystem as seen by
923  INF. If INF is NULL, use the filesystem seen by the debugger
924  (GDB or, for remote targets, the remote stub). Return 0, or
925  -1 if an error occurs (and set *TARGET_ERRNO). */
926  int (*to_fileio_unlink) (struct target_ops *,
927  struct inferior *inf,
928  const char *filename,
929  int *target_errno);
930 
931  /* Read value of symbolic link FILENAME on the target, in the
932  filesystem as seen by INF. If INF is NULL, use the filesystem
933  seen by the debugger (GDB or, for remote targets, the remote
934  stub). Return a null-terminated string allocated via xmalloc,
935  or NULL if an error occurs (and set *TARGET_ERRNO). */
936  char *(*to_fileio_readlink) (struct target_ops *,
937  struct inferior *inf,
938  const char *filename,
939  int *target_errno);
940 
941 
942  /* Implement the "info proc" command. */
943  void (*to_info_proc) (struct target_ops *, const char *,
944  enum info_proc_what);
945 
946  /* Tracepoint-related operations. */
947 
948  /* Prepare the target for a tracing run. */
949  void (*to_trace_init) (struct target_ops *)
951 
952  /* Send full details of a tracepoint location to the target. */
954  struct bp_location *location)
956 
957  /* Is the target able to download tracepoint locations in current
958  state? */
961 
962  /* Send full details of a trace state variable to the target. */
964  struct trace_state_variable *tsv)
966 
967  /* Enable a tracepoint on the target. */
968  void (*to_enable_tracepoint) (struct target_ops *,
969  struct bp_location *location)
971 
972  /* Disable a tracepoint on the target. */
974  struct bp_location *location)
976 
977  /* Inform the target info of memory regions that are readonly
978  (such as text sections), and so it should return data from
979  those rather than look in the trace buffer. */
982 
983  /* Start a trace run. */
984  void (*to_trace_start) (struct target_ops *)
986 
987  /* Get the current status of a tracing run. */
988  int (*to_get_trace_status) (struct target_ops *, struct trace_status *ts)
990 
992  struct breakpoint *tp,
993  struct uploaded_tp *utp)
995 
996  /* Stop a trace run. */
997  void (*to_trace_stop) (struct target_ops *)
999 
1000  /* Ask the target to find a trace frame of the given type TYPE,
1001  using NUM, ADDR1, and ADDR2 as search parameters. Returns the
1002  number of the trace frame, and also the tracepoint number at
1003  TPP. If no trace frame matches, return -1. May throw if the
1004  operation fails. */
1005  int (*to_trace_find) (struct target_ops *,
1006  enum trace_find_type type, int num,
1007  CORE_ADDR addr1, CORE_ADDR addr2, int *tpp)
1008  TARGET_DEFAULT_RETURN (-1);
1009 
1010  /* Get the value of the trace state variable number TSV, returning
1011  1 if the value is known and writing the value itself into the
1012  location pointed to by VAL, else returning 0. */
1014  int tsv, LONGEST *val)
1016 
1017  int (*to_save_trace_data) (struct target_ops *, const char *filename)
1019 
1021  struct uploaded_tp **utpp)
1023 
1025  struct uploaded_tsv **utsvp)
1027 
1029  ULONGEST offset, LONGEST len)
1031 
1032  /* Get the minimum length of instruction on which a fast tracepoint
1033  may be set on the target. If this operation is unsupported,
1034  return -1. If for some reason the minimum length cannot be
1035  determined, return 0. */
1037  TARGET_DEFAULT_RETURN (-1);
1038 
1039  /* Set the target's tracing behavior in response to unexpected
1040  disconnection - set VAL to 1 to keep tracing, 0 to stop. */
1041  void (*to_set_disconnected_tracing) (struct target_ops *, int val)
1043  void (*to_set_circular_trace_buffer) (struct target_ops *, int val)
1045  /* Set the size of trace buffer in the target. */
1048 
1049  /* Add/change textual notes about the trace run, returning 1 if
1050  successful, 0 otherwise. */
1051  int (*to_set_trace_notes) (struct target_ops *,
1052  const char *user, const char *notes,
1053  const char *stopnotes)
1055 
1056  /* Return the processor core that thread PTID was last seen on.
1057  This information is updated only when:
1058  - update_thread_list is called
1059  - thread stops
1060  If the core cannot be determined -- either for the specified
1061  thread, or right now, or in this debug session, or for this
1062  target -- return -1. */
1063  int (*to_core_of_thread) (struct target_ops *, ptid_t ptid)
1064  TARGET_DEFAULT_RETURN (-1);
1065 
1066  /* Verify that the memory in the [MEMADDR, MEMADDR+SIZE) range
1067  matches the contents of [DATA,DATA+SIZE). Returns 1 if there's
1068  a match, 0 if there's a mismatch, and -1 if an error is
1069  encountered while reading memory. */
1070  int (*to_verify_memory) (struct target_ops *, const gdb_byte *data,
1071  CORE_ADDR memaddr, ULONGEST size)
1073 
1074  /* Return the address of the start of the Thread Information Block
1075  a Windows OS specific feature. */
1076  int (*to_get_tib_address) (struct target_ops *,
1077  ptid_t ptid, CORE_ADDR *addr)
1079 
1080  /* Send the new settings of write permission variables. */
1081  void (*to_set_permissions) (struct target_ops *)
1083 
1084  /* Look for a static tracepoint marker at ADDR, and fill in MARKER
1085  with its details. Return 1 on success, 0 on failure. */
1087  struct static_tracepoint_marker *marker)
1089 
1090  /* Return a vector of all tracepoints markers string id ID, or all
1091  markers if ID is NULL. */
1092  VEC(static_tracepoint_marker_p) *(*to_static_tracepoint_markers_by_strid) (struct target_ops *, const char *id)
1094 
1095  /* Return a traceframe info object describing the current
1096  traceframe's contents. This method should not cache data;
1097  higher layers take care of caching, invalidating, and
1098  re-fetching when necessary. */
1101 
1102  /* Ask the target to use or not to use agent according to USE. Return 1
1103  successful, 0 otherwise. */
1104  int (*to_use_agent) (struct target_ops *, int use)
1106 
1107  /* Is the target able to use agent in current state? */
1108  int (*to_can_use_agent) (struct target_ops *)
1110 
1111  /* Check whether the target supports branch tracing. */
1114 
1115  /* Enable branch tracing for PTID using CONF configuration.
1116  Return a branch trace target information struct for reading and for
1117  disabling branch trace. */
1118  struct btrace_target_info *(*to_enable_btrace) (struct target_ops *,
1119  ptid_t ptid,
1120  const struct btrace_config *conf)
1122 
1123  /* Disable branch tracing and deallocate TINFO. */
1124  void (*to_disable_btrace) (struct target_ops *,
1125  struct btrace_target_info *tinfo)
1127 
1128  /* Disable branch tracing and deallocate TINFO. This function is similar
1129  to to_disable_btrace, except that it is called during teardown and is
1130  only allowed to perform actions that are safe. A counter-example would
1131  be attempting to talk to a remote target. */
1132  void (*to_teardown_btrace) (struct target_ops *,
1133  struct btrace_target_info *tinfo)
1135 
1136  /* Read branch trace data for the thread indicated by BTINFO into DATA.
1137  DATA is cleared before new trace is added. */
1138  enum btrace_error (*to_read_btrace) (struct target_ops *self,
1139  struct btrace_data *data,
1140  struct btrace_target_info *btinfo,
1141  enum btrace_read_type type)
1143 
1144  /* Get the branch trace configuration. */
1145  const struct btrace_config *(*to_btrace_conf) (struct target_ops *self,
1146  const struct btrace_target_info *)
1147  TARGET_DEFAULT_RETURN (NULL);
1148 
1149  /* Current recording method. */
1152 
1153  /* Stop trace recording. */
1154  void (*to_stop_recording) (struct target_ops *)
1156 
1157  /* Print information about the recording. */
1158  void (*to_info_record) (struct target_ops *)
1160 
1161  /* Save the recorded execution trace into a file. */
1162  void (*to_save_record) (struct target_ops *, const char *filename)
1164 
1165  /* Delete the recorded execution trace from the current position
1166  onwards. */
1167  void (*to_delete_record) (struct target_ops *)
1169 
1170  /* Query if the record target is currently replaying PTID. */
1171  int (*to_record_is_replaying) (struct target_ops *, ptid_t ptid)
1173 
1174  /* Query if the record target will replay PTID if it were resumed in
1175  execution direction DIR. */
1176  int (*to_record_will_replay) (struct target_ops *, ptid_t ptid, int dir)
1178 
1179  /* Stop replaying. */
1182 
1183  /* Go to the begin of the execution trace. */
1186 
1187  /* Go to the end of the execution trace. */
1188  void (*to_goto_record_end) (struct target_ops *)
1190 
1191  /* Go to a specific location in the recorded execution trace. */
1192  void (*to_goto_record) (struct target_ops *, ULONGEST insn)
1194 
1195  /* Disassemble SIZE instructions in the recorded execution trace from
1196  the current position.
1197  If SIZE < 0, disassemble abs (SIZE) preceding instructions; otherwise,
1198  disassemble SIZE succeeding instructions. */
1199  void (*to_insn_history) (struct target_ops *, int size,
1200  gdb_disassembly_flags flags)
1202 
1203  /* Disassemble SIZE instructions in the recorded execution trace around
1204  FROM.
1205  If SIZE < 0, disassemble abs (SIZE) instructions before FROM; otherwise,
1206  disassemble SIZE instructions after FROM. */
1208  ULONGEST from, int size,
1209  gdb_disassembly_flags flags)
1211 
1212  /* Disassemble a section of the recorded execution trace from instruction
1213  BEGIN (inclusive) to instruction END (inclusive). */
1215  ULONGEST begin, ULONGEST end,
1216  gdb_disassembly_flags flags)
1218 
1219  /* Print a function trace of the recorded execution trace.
1220  If SIZE < 0, print abs (SIZE) preceding functions; otherwise, print SIZE
1221  succeeding functions. */
1222  void (*to_call_history) (struct target_ops *, int size, int flags)
1224 
1225  /* Print a function trace of the recorded execution trace starting
1226  at function FROM.
1227  If SIZE < 0, print abs (SIZE) functions before FROM; otherwise, print
1228  SIZE functions after FROM. */
1230  ULONGEST begin, int size, int flags)
1232 
1233  /* Print a function trace of an execution trace section from function BEGIN
1234  (inclusive) to function END (inclusive). */
1236  ULONGEST begin, ULONGEST end, int flags)
1238 
1239  /* Nonzero if TARGET_OBJECT_LIBRARIES_SVR4 may be read with a
1240  non-empty annex. */
1243 
1244  /* Those unwinders are tried before any other arch unwinders. If
1245  SELF doesn't have unwinders, it should delegate to the
1246  "beneath" target. */
1247  const struct frame_unwind *(*to_get_unwinder) (struct target_ops *self)
1248  TARGET_DEFAULT_RETURN (NULL);
1249 
1250  const struct frame_unwind *(*to_get_tailcall_unwinder) (struct target_ops *self)
1251  TARGET_DEFAULT_RETURN (NULL);
1252 
1253  /* Prepare to generate a core file. */
1256 
1257  /* Cleanup after generating a core file. */
1260 
1262  /* Need sub-structure for target machine related rather than comm related?
1263  */
1264  };
1265 
1266 /* Magic number for checking ops size. If a struct doesn't end with this
1267  number, somebody changed the declaration but didn't change all the
1268  places that initialize one. */
1269 
1270 #define OPS_MAGIC 3840
1271 
1272 /* The ops structure for our "current" target process. This should
1273  never be NULL. If there is no target, it points to the dummy_target. */
1274 
1275 extern struct target_ops current_target;
1276 
1277 /* Define easy words for doing these operations on our current target. */
1278 
1279 #define target_shortname (current_target.to_shortname)
1280 #define target_longname (current_target.to_longname)
1281 
1282 /* Does whatever cleanup is required for a target that we are no
1283  longer going to be calling. This routine is automatically always
1284  called after popping the target off the target stack - the target's
1285  own methods are no longer available through the target vector.
1286  Closing file descriptors and freeing all memory allocated memory are
1287  typical things it should do. */
1288 
1289 void target_close (struct target_ops *targ);
1290 
1291 /* Find the correct target to use for "attach". If a target on the
1292  current stack supports attaching, then it is returned. Otherwise,
1293  the default run target is returned. */
1294 
1295 extern struct target_ops *find_attach_target (void);
1296 
1297 /* Find the correct target to use for "run". If a target on the
1298  current stack supports creating a new inferior, then it is
1299  returned. Otherwise, the default run target is returned. */
1300 
1301 extern struct target_ops *find_run_target (void);
1302 
1303 /* Some targets don't generate traps when attaching to the inferior,
1304  or their target_attach implementation takes care of the waiting.
1305  These targets must set to_attach_no_wait. */
1306 
1307 #define target_attach_no_wait \
1308  (current_target.to_attach_no_wait)
1309 
1310 /* The target_attach operation places a process under debugger control,
1311  and stops the process.
1312 
1313  This operation provides a target-specific hook that allows the
1314  necessary bookkeeping to be performed after an attach completes. */
1315 #define target_post_attach(pid) \
1316  (*current_target.to_post_attach) (&current_target, pid)
1317 
1318 /* Display a message indicating we're about to detach from the current
1319  inferior process. */
1320 
1321 extern void target_announce_detach (int from_tty);
1322 
1323 /* Takes a program previously attached to and detaches it.
1324  The program may resume execution (some targets do, some don't) and will
1325  no longer stop on signals, etc. We better not have left any breakpoints
1326  in the program or it'll die when it hits one. ARGS is arguments
1327  typed by the user (e.g. a signal to send the process). FROM_TTY
1328  says whether to be verbose or not. */
1329 
1330 extern void target_detach (const char *, int);
1331 
1332 /* Disconnect from the current target without resuming it (leaving it
1333  waiting for a debugger). */
1334 
1335 extern void target_disconnect (const char *, int);
1336 
1337 /* Resume execution (or prepare for execution) of a target thread,
1338  process or all processes. STEP says whether to hardware
1339  single-step or to run free; SIGGNAL is the signal to be given to
1340  the target, or GDB_SIGNAL_0 for no signal. The caller may not pass
1341  GDB_SIGNAL_DEFAULT. A specific PTID means `step/resume only this
1342  process id'. A wildcard PTID (all threads, or all threads of
1343  process) means `step/resume INFERIOR_PTID, and let other threads
1344  (for which the wildcard PTID matches) resume with their
1345  'thread->suspend.stop_signal' signal (usually GDB_SIGNAL_0) if it
1346  is in "pass" state, or with no signal if in "no pass" state.
1347 
1348  In order to efficiently handle batches of resumption requests,
1349  targets may implement this method such that it records the
1350  resumption request, but defers the actual resumption to the
1351  target_commit_resume method implementation. See
1352  target_commit_resume below. */
1353 extern void target_resume (ptid_t ptid, int step, enum gdb_signal signal);
1354 
1355 /* Commit a series of resumption requests previously prepared with
1356  target_resume calls.
1357 
1358  GDB always calls target_commit_resume after calling target_resume
1359  one or more times. A target may thus use this method in
1360  coordination with the target_resume method to batch target-side
1361  resumption requests. In that case, the target doesn't actually
1362  resume in its target_resume implementation. Instead, it prepares
1363  the resumption in target_resume, and defers the actual resumption
1364  to target_commit_resume. E.g., the remote target uses this to
1365  coalesce multiple resumption requests in a single vCont packet. */
1366 extern void target_commit_resume ();
1367 
1368 /* Setup to defer target_commit_resume calls, and reactivate
1369  target_commit_resume on destruction, if it was previously
1370  active. */
1372 
1373 /* For target_read_memory see target/target.h. */
1374 
1375 /* The default target_ops::to_wait implementation. */
1376 
1377 extern ptid_t default_target_wait (struct target_ops *ops,
1378  ptid_t ptid,
1379  struct target_waitstatus *status,
1380  int options);
1381 
1382 /* Fetch at least register REGNO, or all regs if regno == -1. No result. */
1383 
1384 extern void target_fetch_registers (struct regcache *regcache, int regno);
1385 
1386 /* Store at least register REGNO, or all regs if REGNO == -1.
1387  It can store as many registers as it wants to, so target_prepare_to_store
1388  must have been previously called. Calls error() if there are problems. */
1389 
1390 extern void target_store_registers (struct regcache *regcache, int regs);
1391 
1392 /* Get ready to modify the registers array. On machines which store
1393  individual registers, this doesn't need to do anything. On machines
1394  which store all the registers in one fell swoop, this makes sure
1395  that REGISTERS contains all the registers from the program being
1396  debugged. */
1397 
1398 #define target_prepare_to_store(regcache) \
1399  (*current_target.to_prepare_to_store) (&current_target, regcache)
1400 
1401 /* Determine current address space of thread PTID. */
1402 
1404 
1405 /* Implement the "info proc" command. This returns one if the request
1406  was handled, and zero otherwise. It can also throw an exception if
1407  an error was encountered while attempting to handle the
1408  request. */
1409 
1410 int target_info_proc (const char *, enum info_proc_what);
1411 
1412 /* Returns true if this target can disable address space randomization. */
1413 
1415 
1416 /* Returns true if this target can enable and disable tracepoints
1417  while a trace experiment is running. */
1418 
1419 #define target_supports_enable_disable_tracepoint() \
1420  (*current_target.to_supports_enable_disable_tracepoint) (&current_target)
1421 
1422 #define target_supports_string_tracing() \
1423  (*current_target.to_supports_string_tracing) (&current_target)
1424 
1425 /* Returns true if this target can handle breakpoint conditions
1426  on its end. */
1427 
1428 #define target_supports_evaluation_of_breakpoint_conditions() \
1429  (*current_target.to_supports_evaluation_of_breakpoint_conditions) (&current_target)
1430 
1431 /* Returns true if this target can handle breakpoint commands
1432  on its end. */
1433 
1434 #define target_can_run_breakpoint_commands() \
1435  (*current_target.to_can_run_breakpoint_commands) (&current_target)
1436 
1437 extern int target_read_string (CORE_ADDR, char **, int, int *);
1438 
1439 /* For target_read_memory see target/target.h. */
1440 
1441 extern int target_read_raw_memory (CORE_ADDR memaddr, gdb_byte *myaddr,
1442  ssize_t len);
1443 
1444 extern int target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len);
1445 
1446 extern int target_read_code (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len);
1447 
1448 /* For target_write_memory see target/target.h. */
1449 
1450 extern int target_write_raw_memory (CORE_ADDR memaddr, const gdb_byte *myaddr,
1451  ssize_t len);
1452 
1453 /* Fetches the target's memory map. If one is found it is sorted
1454  and returned, after some consistency checking. Otherwise, NULL
1455  is returned. */
1456 std::vector<mem_region> target_memory_map (void);
1457 
1458 /* Erases all flash memory regions on the target. */
1459 void flash_erase_command (const char *cmd, int from_tty);
1460 
1461 /* Erase the specified flash region. */
1462 void target_flash_erase (ULONGEST address, LONGEST length);
1463 
1464 /* Finish a sequence of flash operations. */
1465 void target_flash_done (void);
1466 
1467 /* Describes a request for a memory write operation. */
1469  {
1470  /* Begining address that must be written. */
1472  /* Past-the-end address. */
1474  /* The data to write. */
1476  /* A callback baton for progress reporting for this request. */
1477  void *baton;
1478  };
1481 
1482 /* Enumeration specifying different flash preservation behaviour. */
1484  {
1487  };
1488 
1489 /* Write several memory blocks at once. This version can be more
1490  efficient than making several calls to target_write_memory, in
1491  particular because it can optimize accesses to flash memory.
1492 
1493  Moreover, this is currently the only memory access function in gdb
1494  that supports writing to flash memory, and it should be used for
1495  all cases where access to flash memory is desirable.
1496 
1497  REQUESTS is the vector (see vec.h) of memory_write_request.
1498  PRESERVE_FLASH_P indicates what to do with blocks which must be
1499  erased, but not completely rewritten.
1500  PROGRESS_CB is a function that will be periodically called to provide
1501  feedback to user. It will be called with the baton corresponding
1502  to the request currently being written. It may also be called
1503  with a NULL baton, when preserved flash sectors are being rewritten.
1504 
1505  The function returns 0 on success, and error otherwise. */
1507  enum flash_preserve_mode preserve_flash_p,
1508  void (*progress_cb) (ULONGEST, void *));
1509 
1510 /* Print a line about the current target. */
1511 
1512 #define target_files_info() \
1513  (*current_target.to_files_info) (&current_target)
1514 
1515 /* Insert a breakpoint at address BP_TGT->placed_address in
1516  the target machine. Returns 0 for success, and returns non-zero or
1517  throws an error (with a detailed failure reason error code and
1518  message) otherwise. */
1519 
1520 extern int target_insert_breakpoint (struct gdbarch *gdbarch,
1521  struct bp_target_info *bp_tgt);
1522 
1523 /* Remove a breakpoint at address BP_TGT->placed_address in the target
1524  machine. Result is 0 for success, non-zero for error. */
1525 
1526 extern int target_remove_breakpoint (struct gdbarch *gdbarch,
1527  struct bp_target_info *bp_tgt,
1528  enum remove_bp_reason reason);
1529 
1530 /* Return true if the target stack has a non-default
1531  "to_terminal_ours" method. */
1532 
1533 extern int target_supports_terminal_ours (void);
1534 
1535 /* Kill the inferior process. Make it go away. */
1536 
1537 extern void target_kill (void);
1538 
1539 /* Load an executable file into the target process. This is expected
1540  to not only bring new code into the target process, but also to
1541  update GDB's symbol tables to match.
1542 
1543  ARG contains command-line arguments, to be broken down with
1544  buildargv (). The first non-switch argument is the filename to
1545  load, FILE; the second is a number (as parsed by strtoul (..., ...,
1546  0)), which is an offset to apply to the load addresses of FILE's
1547  sections. The target may define switches, or other non-switch
1548  arguments, as it pleases. */
1549 
1550 extern void target_load (const char *arg, int from_tty);
1551 
1552 /* Some targets (such as ttrace-based HPUX) don't allow us to request
1553  notification of inferior events such as fork and vork immediately
1554  after the inferior is created. (This because of how gdb gets an
1555  inferior created via invoking a shell to do it. In such a scenario,
1556  if the shell init file has commands in it, the shell will fork and
1557  exec for each of those commands, and we will see each such fork
1558  event. Very bad.)
1559 
1560  Such targets will supply an appropriate definition for this function. */
1561 
1562 #define target_post_startup_inferior(ptid) \
1563  (*current_target.to_post_startup_inferior) (&current_target, ptid)
1564 
1565 /* On some targets, we can catch an inferior fork or vfork event when
1566  it occurs. These functions insert/remove an already-created
1567  catchpoint for such events. They return 0 for success, 1 if the
1568  catchpoint type is not supported and -1 for failure. */
1569 
1570 #define target_insert_fork_catchpoint(pid) \
1571  (*current_target.to_insert_fork_catchpoint) (&current_target, pid)
1572 
1573 #define target_remove_fork_catchpoint(pid) \
1574  (*current_target.to_remove_fork_catchpoint) (&current_target, pid)
1575 
1576 #define target_insert_vfork_catchpoint(pid) \
1577  (*current_target.to_insert_vfork_catchpoint) (&current_target, pid)
1578 
1579 #define target_remove_vfork_catchpoint(pid) \
1580  (*current_target.to_remove_vfork_catchpoint) (&current_target, pid)
1581 
1582 /* If the inferior forks or vforks, this function will be called at
1583  the next resume in order to perform any bookkeeping and fiddling
1584  necessary to continue debugging either the parent or child, as
1585  requested, and releasing the other. Information about the fork
1586  or vfork event is available via get_last_target_status ().
1587  This function returns 1 if the inferior should not be resumed
1588  (i.e. there is another event pending). */
1589 
1590 int target_follow_fork (int follow_child, int detach_fork);
1591 
1592 /* Handle the target-specific bookkeeping required when the inferior
1593  makes an exec call. INF is the exec'd inferior. */
1594 
1595 void target_follow_exec (struct inferior *inf, char *execd_pathname);
1596 
1597 /* On some targets, we can catch an inferior exec event when it
1598  occurs. These functions insert/remove an already-created
1599  catchpoint for such events. They return 0 for success, 1 if the
1600  catchpoint type is not supported and -1 for failure. */
1601 
1602 #define target_insert_exec_catchpoint(pid) \
1603  (*current_target.to_insert_exec_catchpoint) (&current_target, pid)
1604 
1605 #define target_remove_exec_catchpoint(pid) \
1606  (*current_target.to_remove_exec_catchpoint) (&current_target, pid)
1607 
1608 /* Syscall catch.
1609 
1610  NEEDED is true if any syscall catch (of any kind) is requested.
1611  If NEEDED is false, it means the target can disable the mechanism to
1612  catch system calls because there are no more catchpoints of this type.
1613 
1614  ANY_COUNT is nonzero if a generic (filter-less) syscall catch is
1615  being requested. In this case, SYSCALL_COUNTS should be ignored.
1616 
1617  SYSCALL_COUNTS is an array of ints, indexed by syscall number. An
1618  element in this array is nonzero if that syscall should be caught.
1619  This argument only matters if ANY_COUNT is zero.
1620 
1621  Return 0 for success, 1 if syscall catchpoints are not supported or -1
1622  for failure. */
1623 
1624 #define target_set_syscall_catchpoint(pid, needed, any_count, syscall_counts) \
1625  (*current_target.to_set_syscall_catchpoint) (&current_target, \
1626  pid, needed, any_count, \
1627  syscall_counts)
1628 
1629 /* Returns TRUE if PID has exited. And, also sets EXIT_STATUS to the
1630  exit code of PID, if any. */
1631 
1632 #define target_has_exited(pid,wait_status,exit_status) \
1633  (*current_target.to_has_exited) (&current_target, \
1634  pid,wait_status,exit_status)
1635 
1636 /* The debugger has completed a blocking wait() call. There is now
1637  some process event that must be processed. This function should
1638  be defined by those targets that require the debugger to perform
1639  cleanup or internal state changes in response to the process event. */
1640 
1641 /* For target_mourn_inferior see target/target.h. */
1642 
1643 /* Does target have enough data to do a run or attach command? */
1644 
1645 #define target_can_run(t) \
1646  ((t)->to_can_run) (t)
1647 
1648 /* Set list of signals to be handled in the target.
1649 
1650  PASS_SIGNALS is an array of size NSIG, indexed by target signal number
1651  (enum gdb_signal). For every signal whose entry in this array is
1652  non-zero, the target is allowed -but not required- to skip reporting
1653  arrival of the signal to the GDB core by returning from target_wait,
1654  and to pass the signal directly to the inferior instead.
1655 
1656  However, if the target is hardware single-stepping a thread that is
1657  about to receive a signal, it needs to be reported in any case, even
1658  if mentioned in a previous target_pass_signals call. */
1659 
1660 extern void target_pass_signals (int nsig, unsigned char *pass_signals);
1661 
1662 /* Set list of signals the target may pass to the inferior. This
1663  directly maps to the "handle SIGNAL pass/nopass" setting.
1664 
1665  PROGRAM_SIGNALS is an array of size NSIG, indexed by target signal
1666  number (enum gdb_signal). For every signal whose entry in this
1667  array is non-zero, the target is allowed to pass the signal to the
1668  inferior. Signals not present in the array shall be silently
1669  discarded. This does not influence whether to pass signals to the
1670  inferior as a result of a target_resume call. This is useful in
1671  scenarios where the target needs to decide whether to pass or not a
1672  signal to the inferior without GDB core involvement, such as for
1673  example, when detaching (as threads may have been suspended with
1674  pending signals not reported to GDB). */
1675 
1676 extern void target_program_signals (int nsig, unsigned char *program_signals);
1677 
1678 /* Check to see if a thread is still alive. */
1679 
1680 extern int target_thread_alive (ptid_t ptid);
1681 
1682 /* Sync the target's threads with GDB's thread list. */
1683 
1684 extern void target_update_thread_list (void);
1685 
1686 /* Make target stop in a continuable fashion. (For instance, under
1687  Unix, this should act like SIGSTOP). Note that this function is
1688  asynchronous: it does not wait for the target to become stopped
1689  before returning. If this is the behavior you want please use
1690  target_stop_and_wait. */
1691 
1692 extern void target_stop (ptid_t ptid);
1693 
1694 /* Interrupt the target just like the user typed a ^C on the
1695  inferior's controlling terminal. (For instance, under Unix, this
1696  should act like SIGINT). This function is asynchronous. */
1697 
1698 extern void target_interrupt (ptid_t ptid);
1699 
1700 /* Pass a ^C, as determined to have been pressed by checking the quit
1701  flag, to the target. Normally calls target_interrupt, but remote
1702  targets may take the opportunity to detect the remote side is not
1703  responding and offer to disconnect. */
1704 
1705 extern void target_pass_ctrlc (void);
1706 
1707 /* The default target_ops::to_pass_ctrlc implementation. Simply calls
1708  target_interrupt. */
1709 extern void default_target_pass_ctrlc (struct target_ops *ops);
1710 
1711 /* Send the specified COMMAND to the target's monitor
1712  (shell,interpreter) for execution. The result of the query is
1713  placed in OUTBUF. */
1714 
1715 #define target_rcmd(command, outbuf) \
1716  (*current_target.to_rcmd) (&current_target, command, outbuf)
1717 
1718 
1719 /* Does the target include all of memory, or only part of it? This
1720  determines whether we look up the target chain for other parts of
1721  memory if this target can't satisfy a request. */
1722 
1723 extern int target_has_all_memory_1 (void);
1724 #define target_has_all_memory target_has_all_memory_1 ()
1725 
1726 /* Does the target include memory? (Dummy targets don't.) */
1727 
1728 extern int target_has_memory_1 (void);
1729 #define target_has_memory target_has_memory_1 ()
1730 
1731 /* Does the target have a stack? (Exec files don't, VxWorks doesn't, until
1732  we start a process.) */
1733 
1734 extern int target_has_stack_1 (void);
1735 #define target_has_stack target_has_stack_1 ()
1736 
1737 /* Does the target have registers? (Exec files don't.) */
1738 
1739 extern int target_has_registers_1 (void);
1740 #define target_has_registers target_has_registers_1 ()
1741 
1742 /* Does the target have execution? Can we make it jump (through
1743  hoops), or pop its stack a few times? This means that the current
1744  target is currently executing; for some targets, that's the same as
1745  whether or not the target is capable of execution, but there are
1746  also targets which can be current while not executing. In that
1747  case this will become true after to_create_inferior or
1748  to_attach. */
1749 
1750 extern int target_has_execution_1 (ptid_t);
1751 
1752 /* Like target_has_execution_1, but always passes inferior_ptid. */
1753 
1754 extern int target_has_execution_current (void);
1755 
1756 #define target_has_execution target_has_execution_current ()
1757 
1758 /* Default implementations for process_stratum targets. Return true
1759  if there's a selected inferior, false otherwise. */
1760 
1761 extern int default_child_has_all_memory (struct target_ops *ops);
1762 extern int default_child_has_memory (struct target_ops *ops);
1763 extern int default_child_has_stack (struct target_ops *ops);
1764 extern int default_child_has_registers (struct target_ops *ops);
1765 extern int default_child_has_execution (struct target_ops *ops,
1766  ptid_t the_ptid);
1767 
1768 /* Can the target support the debugger control of thread execution?
1769  Can it lock the thread scheduler? */
1770 
1771 #define target_can_lock_scheduler \
1772  (current_target.to_has_thread_control & tc_schedlock)
1773 
1774 /* Controls whether async mode is permitted. */
1775 extern int target_async_permitted;
1776 
1777 /* Can the target support asynchronous execution? */
1778 #define target_can_async_p() (current_target.to_can_async_p (&current_target))
1779 
1780 /* Is the target in asynchronous execution mode? */
1781 #define target_is_async_p() (current_target.to_is_async_p (&current_target))
1782 
1783 /* Enables/disabled async target events. */
1784 extern void target_async (int enable);
1785 
1786 /* Enables/disables thread create and exit events. */
1787 extern void target_thread_events (int enable);
1788 
1789 /* Whether support for controlling the target backends always in
1790  non-stop mode is enabled. */
1792 
1793 /* Is the target in non-stop mode? Some targets control the inferior
1794  in non-stop mode even with "set non-stop off". Always true if "set
1795  non-stop" is on. */
1796 extern int target_is_non_stop_p (void);
1797 
1798 #define target_execution_direction() \
1799  (current_target.to_execution_direction (&current_target))
1800 
1801 /* Converts a process id to a string. Usually, the string just contains
1802  `process xyz', but on some systems it may contain
1803  `process xyz thread abc'. */
1804 
1805 extern const char *target_pid_to_str (ptid_t ptid);
1806 
1807 extern const char *normal_pid_to_str (ptid_t ptid);
1808 
1809 /* Return a short string describing extra information about PID,
1810  e.g. "sleeping", "runnable", "running on LWP 3". Null return value
1811  is okay. */
1812 
1813 #define target_extra_thread_info(TP) \
1814  (current_target.to_extra_thread_info (&current_target, TP))
1815 
1816 /* Return the thread's name, or NULL if the target is unable to determine it.
1817  The returned value must not be freed by the caller. */
1818 
1819 extern const char *target_thread_name (struct thread_info *);
1820 
1821 /* Given a pointer to a thread library specific thread handle and
1822  its length, return a pointer to the corresponding thread_info struct. */
1823 
1825  (const gdb_byte *thread_handle, int handle_len, struct inferior *inf);
1826 
1827 /* Attempts to find the pathname of the executable file
1828  that was run to create a specified process.
1829 
1830  The process PID must be stopped when this operation is used.
1831 
1832  If the executable file cannot be determined, NULL is returned.
1833 
1834  Else, a pointer to a character string containing the pathname
1835  is returned. This string should be copied into a buffer by
1836  the client if the string will not be immediately used, or if
1837  it must persist. */
1838 
1839 #define target_pid_to_exec_file(pid) \
1840  (current_target.to_pid_to_exec_file) (&current_target, pid)
1841 
1842 /* See the to_thread_architecture description in struct target_ops. */
1843 
1844 #define target_thread_architecture(ptid) \
1845  (current_target.to_thread_architecture (&current_target, ptid))
1846 
1847 /*
1848  * Iterator function for target memory regions.
1849  * Calls a callback function once for each memory region 'mapped'
1850  * in the child process. Defined as a simple macro rather than
1851  * as a function macro so that it can be tested for nullity.
1852  */
1853 
1854 #define target_find_memory_regions(FUNC, DATA) \
1855  (current_target.to_find_memory_regions) (&current_target, FUNC, DATA)
1856 
1857 /*
1858  * Compose corefile .note section.
1859  */
1860 
1861 #define target_make_corefile_notes(BFD, SIZE_P) \
1862  (current_target.to_make_corefile_notes) (&current_target, BFD, SIZE_P)
1863 
1864 /* Bookmark interfaces. */
1865 #define target_get_bookmark(ARGS, FROM_TTY) \
1866  (current_target.to_get_bookmark) (&current_target, ARGS, FROM_TTY)
1867 
1868 #define target_goto_bookmark(ARG, FROM_TTY) \
1869  (current_target.to_goto_bookmark) (&current_target, ARG, FROM_TTY)
1870 
1871 /* Hardware watchpoint interfaces. */
1872 
1873 /* Returns non-zero if we were stopped by a hardware watchpoint (memory read or
1874  write). Only the INFERIOR_PTID task is being queried. */
1875 
1876 #define target_stopped_by_watchpoint() \
1877  ((*current_target.to_stopped_by_watchpoint) (&current_target))
1878 
1879 /* Returns non-zero if the target stopped because it executed a
1880  software breakpoint instruction. */
1881 
1882 #define target_stopped_by_sw_breakpoint() \
1883  ((*current_target.to_stopped_by_sw_breakpoint) (&current_target))
1884 
1885 #define target_supports_stopped_by_sw_breakpoint() \
1886  ((*current_target.to_supports_stopped_by_sw_breakpoint) (&current_target))
1887 
1888 #define target_stopped_by_hw_breakpoint() \
1889  ((*current_target.to_stopped_by_hw_breakpoint) (&current_target))
1890 
1891 #define target_supports_stopped_by_hw_breakpoint() \
1892  ((*current_target.to_supports_stopped_by_hw_breakpoint) (&current_target))
1893 
1894 /* Non-zero if we have steppable watchpoints */
1895 
1896 #define target_have_steppable_watchpoint \
1897  (current_target.to_have_steppable_watchpoint)
1898 
1899 /* Non-zero if we have continuable watchpoints */
1900 
1901 #define target_have_continuable_watchpoint \
1902  (current_target.to_have_continuable_watchpoint)
1903 
1904 /* Provide defaults for hardware watchpoint functions. */
1905 
1906 /* If the *_hw_beakpoint functions have not been defined
1907  elsewhere use the definitions in the target vector. */
1908 
1909 /* Returns positive if we can set a hardware watchpoint of type TYPE.
1910  Returns negative if the target doesn't have enough hardware debug
1911  registers available. Return zero if hardware watchpoint of type
1912  TYPE isn't supported. TYPE is one of bp_hardware_watchpoint,
1913  bp_read_watchpoint, bp_write_watchpoint, or bp_hardware_breakpoint.
1914  CNT is the number of such watchpoints used so far, including this
1915  one. OTHERTYPE is the number of watchpoints of other types than
1916  this one used so far. */
1917 
1918 #define target_can_use_hardware_watchpoint(TYPE,CNT,OTHERTYPE) \
1919  (*current_target.to_can_use_hw_breakpoint) (&current_target, \
1920  TYPE, CNT, OTHERTYPE)
1921 
1922 /* Returns the number of debug registers needed to watch the given
1923  memory region, or zero if not supported. */
1924 
1925 #define target_region_ok_for_hw_watchpoint(addr, len) \
1926  (*current_target.to_region_ok_for_hw_watchpoint) (&current_target, \
1927  addr, len)
1928 
1929 
1930 #define target_can_do_single_step() \
1931  (*current_target.to_can_do_single_step) (&current_target)
1932 
1933 /* Set/clear a hardware watchpoint starting at ADDR, for LEN bytes.
1934  TYPE is 0 for write, 1 for read, and 2 for read/write accesses.
1935  COND is the expression for its condition, or NULL if there's none.
1936  Returns 0 for success, 1 if the watchpoint type is not supported,
1937  -1 for failure. */
1938 
1939 #define target_insert_watchpoint(addr, len, type, cond) \
1940  (*current_target.to_insert_watchpoint) (&current_target, \
1941  addr, len, type, cond)
1942 
1943 #define target_remove_watchpoint(addr, len, type, cond) \
1944  (*current_target.to_remove_watchpoint) (&current_target, \
1945  addr, len, type, cond)
1946 
1947 /* Insert a new masked watchpoint at ADDR using the mask MASK.
1948  RW may be hw_read for a read watchpoint, hw_write for a write watchpoint
1949  or hw_access for an access watchpoint. Returns 0 for success, 1 if
1950  masked watchpoints are not supported, -1 for failure. */
1951 
1953  enum target_hw_bp_type);
1954 
1955 /* Remove a masked watchpoint at ADDR with the mask MASK.
1956  RW may be hw_read for a read watchpoint, hw_write for a write watchpoint
1957  or hw_access for an access watchpoint. Returns 0 for success, non-zero
1958  for failure. */
1959 
1961  enum target_hw_bp_type);
1962 
1963 /* Insert a hardware breakpoint at address BP_TGT->placed_address in
1964  the target machine. Returns 0 for success, and returns non-zero or
1965  throws an error (with a detailed failure reason error code and
1966  message) otherwise. */
1967 
1968 #define target_insert_hw_breakpoint(gdbarch, bp_tgt) \
1969  (*current_target.to_insert_hw_breakpoint) (&current_target, \
1970  gdbarch, bp_tgt)
1971 
1972 #define target_remove_hw_breakpoint(gdbarch, bp_tgt) \
1973  (*current_target.to_remove_hw_breakpoint) (&current_target, \
1974  gdbarch, bp_tgt)
1975 
1976 /* Return number of debug registers needed for a ranged breakpoint,
1977  or -1 if ranged breakpoints are not supported. */
1978 
1979 extern int target_ranged_break_num_registers (void);
1980 
1981 /* Return non-zero if target knows the data address which triggered this
1982  target_stopped_by_watchpoint, in such case place it to *ADDR_P. Only the
1983  INFERIOR_PTID task is being queried. */
1984 #define target_stopped_data_address(target, addr_p) \
1985  (*(target)->to_stopped_data_address) (target, addr_p)
1986 
1987 /* Return non-zero if ADDR is within the range of a watchpoint spanning
1988  LENGTH bytes beginning at START. */
1989 #define target_watchpoint_addr_within_range(target, addr, start, length) \
1990  (*(target)->to_watchpoint_addr_within_range) (target, addr, start, length)
1991 
1992 /* Return non-zero if the target is capable of using hardware to evaluate
1993  the condition expression. In this case, if the condition is false when
1994  the watched memory location changes, execution may continue without the
1995  debugger being notified.
1996 
1997  Due to limitations in the hardware implementation, it may be capable of
1998  avoiding triggering the watchpoint in some cases where the condition
1999  expression is false, but may report some false positives as well.
2000  For this reason, GDB will still evaluate the condition expression when
2001  the watchpoint triggers. */
2002 #define target_can_accel_watchpoint_condition(addr, len, type, cond) \
2003  (*current_target.to_can_accel_watchpoint_condition) (&current_target, \
2004  addr, len, type, cond)
2005 
2006 /* Return number of debug registers needed for a masked watchpoint,
2007  -1 if masked watchpoints are not supported or -2 if the given address
2008  and mask combination cannot be used. */
2009 
2010 extern int target_masked_watch_num_registers (CORE_ADDR addr, CORE_ADDR mask);
2011 
2012 /* Target can execute in reverse? */
2013 #define target_can_execute_reverse \
2014  current_target.to_can_execute_reverse (&current_target)
2015 
2016 extern const struct target_desc *target_read_description (struct target_ops *);
2017 
2018 #define target_get_ada_task_ptid(lwp, tid) \
2019  (*current_target.to_get_ada_task_ptid) (&current_target, lwp,tid)
2020 
2021 /* Utility implementation of searching memory. */
2022 extern int simple_search_memory (struct target_ops* ops,
2023  CORE_ADDR start_addr,
2024  ULONGEST search_space_len,
2025  const gdb_byte *pattern,
2026  ULONGEST pattern_len,
2027  CORE_ADDR *found_addrp);
2028 
2029 /* Main entry point for searching memory. */
2030 extern int target_search_memory (CORE_ADDR start_addr,
2031  ULONGEST search_space_len,
2032  const gdb_byte *pattern,
2033  ULONGEST pattern_len,
2034  CORE_ADDR *found_addrp);
2035 
2036 /* Target file operations. */
2037 
2038 /* Return nonzero if the filesystem seen by the current inferior
2039  is the local filesystem, zero otherwise. */
2040 #define target_filesystem_is_local() \
2041  current_target.to_filesystem_is_local (&current_target)
2042 
2043 /* Open FILENAME on the target, in the filesystem as seen by INF,
2044  using FLAGS and MODE. If INF is NULL, use the filesystem seen
2045  by the debugger (GDB or, for remote targets, the remote stub).
2046  Return a target file descriptor, or -1 if an error occurs (and
2047  set *TARGET_ERRNO). */
2048 extern int target_fileio_open (struct inferior *inf,
2049  const char *filename, int flags,
2050  int mode, int *target_errno);
2051 
2052 /* Like target_fileio_open, but print a warning message if the
2053  file is being accessed over a link that may be slow. */
2054 extern int target_fileio_open_warn_if_slow (struct inferior *inf,
2055  const char *filename,
2056  int flags,
2057  int mode,
2058  int *target_errno);
2059 
2060 /* Write up to LEN bytes from WRITE_BUF to FD on the target.
2061  Return the number of bytes written, or -1 if an error occurs
2062  (and set *TARGET_ERRNO). */
2063 extern int target_fileio_pwrite (int fd, const gdb_byte *write_buf, int len,
2064  ULONGEST offset, int *target_errno);
2065 
2066 /* Read up to LEN bytes FD on the target into READ_BUF.
2067  Return the number of bytes read, or -1 if an error occurs
2068  (and set *TARGET_ERRNO). */
2069 extern int target_fileio_pread (int fd, gdb_byte *read_buf, int len,
2070  ULONGEST offset, int *target_errno);
2071 
2072 /* Get information about the file opened as FD on the target
2073  and put it in SB. Return 0 on success, or -1 if an error
2074  occurs (and set *TARGET_ERRNO). */
2075 extern int target_fileio_fstat (int fd, struct stat *sb,
2076  int *target_errno);
2077 
2078 /* Close FD on the target. Return 0, or -1 if an error occurs
2079  (and set *TARGET_ERRNO). */
2080 extern int target_fileio_close (int fd, int *target_errno);
2081 
2082 /* Unlink FILENAME on the target, in the filesystem as seen by INF.
2083  If INF is NULL, use the filesystem seen by the debugger (GDB or,
2084  for remote targets, the remote stub). Return 0, or -1 if an error
2085  occurs (and set *TARGET_ERRNO). */
2086 extern int target_fileio_unlink (struct inferior *inf,
2087  const char *filename,
2088  int *target_errno);
2089 
2090 /* Read value of symbolic link FILENAME on the target, in the
2091  filesystem as seen by INF. If INF is NULL, use the filesystem seen
2092  by the debugger (GDB or, for remote targets, the remote stub).
2093  Return a null-terminated string allocated via xmalloc, or NULL if
2094  an error occurs (and set *TARGET_ERRNO). */
2095 extern char *target_fileio_readlink (struct inferior *inf,
2096  const char *filename,
2097  int *target_errno);
2098 
2099 /* Read target file FILENAME, in the filesystem as seen by INF. If
2100  INF is NULL, use the filesystem seen by the debugger (GDB or, for
2101  remote targets, the remote stub). The return value will be -1 if
2102  the transfer fails or is not supported; 0 if the object is empty;
2103  or the length of the object otherwise. If a positive value is
2104  returned, a sufficiently large buffer will be allocated using
2105  xmalloc and returned in *BUF_P containing the contents of the
2106  object.
2107 
2108  This method should be used for objects sufficiently small to store
2109  in a single xmalloc'd buffer, when no fixed bound on the object's
2110  size is known in advance. */
2112  const char *filename,
2113  gdb_byte **buf_p);
2114 
2115 /* Read target file FILENAME, in the filesystem as seen by INF. If
2116  INF is NULL, use the filesystem seen by the debugger (GDB or, for
2117  remote targets, the remote stub). The result is NUL-terminated and
2118  returned as a string, allocated using xmalloc. If an error occurs
2119  or the transfer is unsupported, NULL is returned. Empty objects
2120  are returned as allocated but empty strings. A warning is issued
2121  if the result contains any embedded NUL bytes. */
2123  (struct inferior *inf, const char *filename);
2124 
2125 
2126 /* Tracepoint-related operations. */
2127 
2128 #define target_trace_init() \
2129  (*current_target.to_trace_init) (&current_target)
2130 
2131 #define target_download_tracepoint(t) \
2132  (*current_target.to_download_tracepoint) (&current_target, t)
2133 
2134 #define target_can_download_tracepoint() \
2135  (*current_target.to_can_download_tracepoint) (&current_target)
2136 
2137 #define target_download_trace_state_variable(tsv) \
2138  (*current_target.to_download_trace_state_variable) (&current_target, tsv)
2139 
2140 #define target_enable_tracepoint(loc) \
2141  (*current_target.to_enable_tracepoint) (&current_target, loc)
2142 
2143 #define target_disable_tracepoint(loc) \
2144  (*current_target.to_disable_tracepoint) (&current_target, loc)
2145 
2146 #define target_trace_start() \
2147  (*current_target.to_trace_start) (&current_target)
2148 
2149 #define target_trace_set_readonly_regions() \
2150  (*current_target.to_trace_set_readonly_regions) (&current_target)
2151 
2152 #define target_get_trace_status(ts) \
2153  (*current_target.to_get_trace_status) (&current_target, ts)
2154 
2155 #define target_get_tracepoint_status(tp,utp) \
2156  (*current_target.to_get_tracepoint_status) (&current_target, tp, utp)
2157 
2158 #define target_trace_stop() \
2159  (*current_target.to_trace_stop) (&current_target)
2160 
2161 #define target_trace_find(type,num,addr1,addr2,tpp) \
2162  (*current_target.to_trace_find) (&current_target, \
2163  (type), (num), (addr1), (addr2), (tpp))
2164 
2165 #define target_get_trace_state_variable_value(tsv,val) \
2166  (*current_target.to_get_trace_state_variable_value) (&current_target, \
2167  (tsv), (val))
2168 
2169 #define target_save_trace_data(filename) \
2170  (*current_target.to_save_trace_data) (&current_target, filename)
2171 
2172 #define target_upload_tracepoints(utpp) \
2173  (*current_target.to_upload_tracepoints) (&current_target, utpp)
2174 
2175 #define target_upload_trace_state_variables(utsvp) \
2176  (*current_target.to_upload_trace_state_variables) (&current_target, utsvp)
2177 
2178 #define target_get_raw_trace_data(buf,offset,len) \
2179  (*current_target.to_get_raw_trace_data) (&current_target, \
2180  (buf), (offset), (len))
2181 
2182 #define target_get_min_fast_tracepoint_insn_len() \
2183  (*current_target.to_get_min_fast_tracepoint_insn_len) (&current_target)
2184 
2185 #define target_set_disconnected_tracing(val) \
2186  (*current_target.to_set_disconnected_tracing) (&current_target, val)
2187 
2188 #define target_set_circular_trace_buffer(val) \
2189  (*current_target.to_set_circular_trace_buffer) (&current_target, val)
2190 
2191 #define target_set_trace_buffer_size(val) \
2192  (*current_target.to_set_trace_buffer_size) (&current_target, val)
2193 
2194 #define target_set_trace_notes(user,notes,stopnotes) \
2195  (*current_target.to_set_trace_notes) (&current_target, \
2196  (user), (notes), (stopnotes))
2197 
2198 #define target_get_tib_address(ptid, addr) \
2199  (*current_target.to_get_tib_address) (&current_target, (ptid), (addr))
2200 
2201 #define target_set_permissions() \
2202  (*current_target.to_set_permissions) (&current_target)
2203 
2204 #define target_static_tracepoint_marker_at(addr, marker) \
2205  (*current_target.to_static_tracepoint_marker_at) (&current_target, \
2206  addr, marker)
2207 
2208 #define target_static_tracepoint_markers_by_strid(marker_id) \
2209  (*current_target.to_static_tracepoint_markers_by_strid) (&current_target, \
2210  marker_id)
2211 
2212 #define target_traceframe_info() \
2213  (*current_target.to_traceframe_info) (&current_target)
2214 
2215 #define target_use_agent(use) \
2216  (*current_target.to_use_agent) (&current_target, use)
2217 
2218 #define target_can_use_agent() \
2219  (*current_target.to_can_use_agent) (&current_target)
2220 
2221 #define target_augmented_libraries_svr4_read() \
2222  (*current_target.to_augmented_libraries_svr4_read) (&current_target)
2223 
2224 /* Command logging facility. */
2225 
2226 #define target_log_command(p) \
2227  (*current_target.to_log_command) (&current_target, p)
2228 
2229 
2230 extern int target_core_of_thread (ptid_t ptid);
2231 
2232 /* See to_get_unwinder in struct target_ops. */
2233 extern const struct frame_unwind *target_get_unwinder (void);
2234 
2235 /* See to_get_tailcall_unwinder in struct target_ops. */
2236 extern const struct frame_unwind *target_get_tailcall_unwinder (void);
2237 
2238 /* This implements basic memory verification, reading target memory
2239  and performing the comparison here (as opposed to accelerated
2240  verification making use of the qCRC packet, for example). */
2241 
2242 extern int simple_verify_memory (struct target_ops* ops,
2243  const gdb_byte *data,
2244  CORE_ADDR memaddr, ULONGEST size);
2245 
2246 /* Verify that the memory in the [MEMADDR, MEMADDR+SIZE) range matches
2247  the contents of [DATA,DATA+SIZE). Returns 1 if there's a match, 0
2248  if there's a mismatch, and -1 if an error is encountered while
2249  reading memory. Throws an error if the functionality is found not
2250  to be supported by the current target. */
2251 int target_verify_memory (const gdb_byte *data,
2252  CORE_ADDR memaddr, ULONGEST size);
2253 
2254 /* Routines for maintenance of the target structures...
2255 
2256  complete_target_initialization: Finalize a target_ops by filling in
2257  any fields needed by the target implementation. Unnecessary for
2258  targets which are registered via add_target, as this part gets
2259  taken care of then.
2260 
2261  add_target: Add a target to the list of all possible targets.
2262  This only makes sense for targets that should be activated using
2263  the "target TARGET_NAME ..." command.
2264 
2265  push_target: Make this target the top of the stack of currently used
2266  targets, within its particular stratum of the stack. Result
2267  is 0 if now atop the stack, nonzero if not on top (maybe
2268  should warn user).
2269 
2270  unpush_target: Remove this from the stack of currently used targets,
2271  no matter where it is on the list. Returns 0 if no
2272  change, 1 if removed from stack. */
2273 
2274 extern void add_target (struct target_ops *);
2275 
2276 extern void add_target_with_completer (struct target_ops *t,
2277  completer_ftype *completer);
2278 
2279 extern void complete_target_initialization (struct target_ops *t);
2280 
2281 /* Adds a command ALIAS for target T and marks it deprecated. This is useful
2282  for maintaining backwards compatibility when renaming targets. */
2283 
2284 extern void add_deprecated_target_alias (struct target_ops *t,
2285  const char *alias);
2286 
2287 extern void push_target (struct target_ops *);
2288 
2289 extern int unpush_target (struct target_ops *);
2290 
2291 extern void target_pre_inferior (int);
2292 
2293 extern void target_preopen (int);
2294 
2295 /* Does whatever cleanup is required to get rid of all pushed targets. */
2296 extern void pop_all_targets (void);
2297 
2298 /* Like pop_all_targets, but pops only targets whose stratum is at or
2299  above STRATUM. */
2300 extern void pop_all_targets_at_and_above (enum strata stratum);
2301 
2302 /* Like pop_all_targets, but pops only targets whose stratum is
2303  strictly above ABOVE_STRATUM. */
2304 extern void pop_all_targets_above (enum strata above_stratum);
2305 
2306 extern int target_is_pushed (struct target_ops *t);
2307 
2309  CORE_ADDR offset);
2310 
2311 /* Struct target_section maps address ranges to file sections. It is
2312  mostly used with BFD files, but can be used without (e.g. for handling
2313  raw disks, or files not in formats handled by BFD). */
2314 
2316  {
2317  CORE_ADDR addr; /* Lowest address in section */
2318  CORE_ADDR endaddr; /* 1+highest address in section */
2319 
2320  struct bfd_section *the_bfd_section;
2321 
2322  /* The "owner" of the section.
2323  It can be any unique value. It is set by add_target_sections
2324  and used by remove_target_sections.
2325  For example, for executables it is a pointer to exec_bfd and
2326  for shlibs it is the so_list pointer. */
2327  void *owner;
2328  };
2329 
2330 /* Holds an array of target sections. Defined by [SECTIONS..SECTIONS_END[. */
2331 
2333 {
2336 };
2337 
2338 /* Return the "section" containing the specified address. */
2339 struct target_section *target_section_by_addr (struct target_ops *target,
2340  CORE_ADDR addr);
2341 
2342 /* Return the target section table this target (or the targets
2343  beneath) currently manipulate. */
2344 
2346  (struct target_ops *target);
2347 
2348 /* From mem-break.c */
2349 
2350 extern int memory_remove_breakpoint (struct target_ops *, struct gdbarch *,
2351  struct bp_target_info *,
2352  enum remove_bp_reason);
2353 
2354 extern int memory_insert_breakpoint (struct target_ops *, struct gdbarch *,
2355  struct bp_target_info *);
2356 
2357 /* Check whether the memory at the breakpoint's placed address still
2358  contains the expected breakpoint instruction. */
2359 
2360 extern int memory_validate_breakpoint (struct gdbarch *gdbarch,
2361  struct bp_target_info *bp_tgt);
2362 
2363 extern int default_memory_remove_breakpoint (struct gdbarch *,
2364  struct bp_target_info *);
2365 
2366 extern int default_memory_insert_breakpoint (struct gdbarch *,
2367  struct bp_target_info *);
2368 
2369 
2370 /* From target.c */
2371 
2372 extern void initialize_targets (void);
2373 
2374 extern void noprocess (void) ATTRIBUTE_NORETURN;
2375 
2376 extern void target_require_runnable (void);
2377 
2378 extern struct target_ops *find_target_beneath (struct target_ops *);
2379 
2380 /* Find the target at STRATUM. If no target is at that stratum,
2381  return NULL. */
2382 
2383 struct target_ops *find_target_at (enum strata stratum);
2384 
2385 /* Read OS data object of type TYPE from the target, and return it in
2386  XML format. The result is NUL-terminated and returned as a string.
2387  If an error occurs or the transfer is unsupported, NULL is
2388  returned. Empty objects are returned as allocated but empty
2389  strings. */
2390 
2392 
2393 
2394 /* Stuff that should be shared among the various remote targets. */
2395 
2396 /* Debugging level. 0 is off, and non-zero values mean to print some debug
2397  information (higher values, more information). */
2398 extern int remote_debug;
2399 
2400 /* Speed in bits per second, or -1 which means don't mess with the speed. */
2401 extern int baud_rate;
2402 
2403 /* Parity for serial port */
2404 extern int serial_parity;
2405 
2406 /* Timeout limit for response from target. */
2407 extern int remote_timeout;
2408 
2409 
2410 
2411 /* Set the show memory breakpoints mode to show, and return a
2412  scoped_restore to restore it back to the current value. */
2415 
2416 extern int may_write_registers;
2417 extern int may_write_memory;
2418 extern int may_insert_breakpoints;
2419 extern int may_insert_tracepoints;
2420 extern int may_insert_fast_tracepoints;
2421 extern int may_stop;
2422 
2423 extern void update_target_permissions (void);
2424 
2425 
2426 /* Imported from machine dependent code. */
2427 
2428 /* See to_supports_btrace in struct target_ops. */
2429 extern int target_supports_btrace (enum btrace_format);
2430 
2431 /* See to_enable_btrace in struct target_ops. */
2432 extern struct btrace_target_info *
2433  target_enable_btrace (ptid_t ptid, const struct btrace_config *);
2434 
2435 /* See to_disable_btrace in struct target_ops. */
2436 extern void target_disable_btrace (struct btrace_target_info *btinfo);
2437 
2438 /* See to_teardown_btrace in struct target_ops. */
2439 extern void target_teardown_btrace (struct btrace_target_info *btinfo);
2440 
2441 /* See to_read_btrace in struct target_ops. */
2442 extern enum btrace_error target_read_btrace (struct btrace_data *,
2443  struct btrace_target_info *,
2444  enum btrace_read_type);
2445 
2446 /* See to_btrace_conf in struct target_ops. */
2447 extern const struct btrace_config *
2448  target_btrace_conf (const struct btrace_target_info *);
2449 
2450 /* See to_stop_recording in struct target_ops. */
2451 extern void target_stop_recording (void);
2452 
2453 /* See to_save_record in struct target_ops. */
2454 extern void target_save_record (const char *filename);
2455 
2456 /* Query if the target supports deleting the execution log. */
2457 extern int target_supports_delete_record (void);
2458 
2459 /* See to_delete_record in struct target_ops. */
2460 extern void target_delete_record (void);
2461 
2462 /* See to_record_method. */
2463 extern enum record_method target_record_method (ptid_t ptid);
2464 
2465 /* See to_record_is_replaying in struct target_ops. */
2466 extern int target_record_is_replaying (ptid_t ptid);
2467 
2468 /* See to_record_will_replay in struct target_ops. */
2469 extern int target_record_will_replay (ptid_t ptid, int dir);
2470 
2471 /* See to_record_stop_replaying in struct target_ops. */
2472 extern void target_record_stop_replaying (void);
2473 
2474 /* See to_goto_record_begin in struct target_ops. */
2475 extern void target_goto_record_begin (void);
2476 
2477 /* See to_goto_record_end in struct target_ops. */
2478 extern void target_goto_record_end (void);
2479 
2480 /* See to_goto_record in struct target_ops. */
2481 extern void target_goto_record (ULONGEST insn);
2482 
2483 /* See to_insn_history. */
2484 extern void target_insn_history (int size, gdb_disassembly_flags flags);
2485 
2486 /* See to_insn_history_from. */
2487 extern void target_insn_history_from (ULONGEST from, int size,
2488  gdb_disassembly_flags flags);
2489 
2490 /* See to_insn_history_range. */
2491 extern void target_insn_history_range (ULONGEST begin, ULONGEST end,
2492  gdb_disassembly_flags flags);
2493 
2494 /* See to_call_history. */
2495 extern void target_call_history (int size, int flags);
2496 
2497 /* See to_call_history_from. */
2498 extern void target_call_history_from (ULONGEST begin, int size, int flags);
2499 
2500 /* See to_call_history_range. */
2501 extern void target_call_history_range (ULONGEST begin, ULONGEST end, int flags);
2502 
2503 /* See to_prepare_to_generate_core. */
2504 extern void target_prepare_to_generate_core (void);
2505 
2506 /* See to_done_generating_core. */
2507 extern void target_done_generating_core (void);
2508 
2509 #if GDB_SELF_TEST
2510 namespace selftests {
2511 
2512 /* A mock process_stratum target_ops that doesn't read/write registers
2513  anywhere. */
2514 
2515 class test_target_ops : public target_ops
2516 {
2517 public:
2518  test_target_ops ();
2519 };
2520 } // namespace selftests
2521 #endif /* GDB_SELF_TEST */
2522 
2523 #endif /* !defined (TARGET_H) */
int target_fileio_unlink(struct inferior *inf, const char *filename, int *target_errno)
Definition: target.c:2938
int(* to_fileio_pread)(struct target_ops *, int fd, gdb_byte *read_buf, int len, ULONGEST offset, int *target_errno)
Definition: target.h:908
int target_has_memory_1(void)
Definition: target.c:260
const char * string
Definition: signals.c:50
void complete_target_initialization(struct target_ops *t)
Definition: target.c:317
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
int target_is_pushed(struct target_ops *t)
Definition: target.c:767
DISABLE_COPY_AND_ASSIGN(memory_read_result)
void target_detach(const char *, int)
Definition: target.c:2147
void(* to_delete_record)(struct target_ops *) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:1167
void target_pass_ctrlc(void)
Definition: target.c:3342
void target_delete_record(void)
Definition: target.c:3634
int(* to_supports_stopped_by_hw_breakpoint)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:499
int(* to_supports_disable_randomization)(struct target_ops *)
Definition: target.h:842
int default_memory_remove_breakpoint(struct gdbarch *, struct bp_target_info *)
Definition: mem-break.c:74
int(* to_is_async_p)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:668
int(* to_upload_tracepoints)(struct target_ops *, struct uploaded_tp **utpp) TARGET_DEFAULT_RETURN(0)
Definition: target.h:1020
const char * to_longname
Definition: target.h:416
void(* to_trace_init)(struct target_ops *) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:949
enum btrace_error target_read_btrace(struct btrace_data *, struct btrace_target_info *, enum btrace_read_type)
Definition: target.c:3585
int(* to_supports_evaluation_of_breakpoint_conditions)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:850
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(* to_goto_bookmark)(struct target_ops *, const gdb_byte *, int) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:693
void(* to_goto_record_begin)(struct target_ops *) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:1184
void target_insn_history_range(ULONGEST begin, ULONGEST end, gdb_disassembly_flags flags)
Definition: target.c:3715
void target_store_registers(struct regcache *regcache, int regs)
Definition: target.c:3445
int memory_validate_breakpoint(struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
Definition: mem-break.c:102
void(* to_save_record)(struct target_ops *, const char *filename) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:1162
ptid_t default_target_wait(struct target_ops *ops, ptid_t ptid, struct target_waitstatus *status, int options)
Definition: target.c:2185
gdb::unique_xmalloc_ptr< char > target_read_stralloc(struct target_ops *ops, enum target_object object, const char *annex)
Definition: target.c:1927
int(* to_find_memory_regions)(struct target_ops *, find_memory_region_ftype func, void *data) TARGET_DEFAULT_FUNC(dummy_find_memory_regions)
Definition: target.h:683
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
struct target_ops * find_attach_target(void)
Definition: target.c:2546
int(* to_fileio_close)(struct target_ops *, int fd, int *target_errno)
Definition: target.h:920
const char * alias
Definition: nds32-tdep.c:114
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
strata
Definition: target.h:83
int may_insert_fast_tracepoints
struct target_section * sections_end
Definition: target.h:2335
const char * normal_pid_to_str(ptid_t ptid)
Definition: target.c:3234
int remote_timeout
Definition: top.c:167
int target_fileio_pwrite(int fd, const gdb_byte *write_buf, int len, ULONGEST offset, int *target_errno)
Definition: target.c:2847
void(* func)(char *)
void(* to_xclose)(struct target_ops *targ)
Definition: target.h:430
gdb::unique_xmalloc_ptr< char > target_fileio_read_stralloc(struct inferior *inf, const char *filename)
Definition: target.c:3082
int(* to_has_memory)(struct target_ops *)
Definition: target.h:658
void(* to_trace_start)(struct target_ops *) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:984
void(* to_flash_done)(struct target_ops *) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:783
void(* to_stop_recording)(struct target_ops *) TARGET_DEFAULT_IGNORE()
Definition: target.h:1154
const char * target_thread_name(struct thread_info *)
Definition: target.c:2200
int target_thread_alive(ptid_t ptid)
Definition: target.c:3304
int memory_insert_breakpoint(struct target_ops *, struct gdbarch *, struct bp_target_info *)
Definition: mem-break.c:87
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
int(* to_has_exited)(struct target_ops *, int, int, int *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:604
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
void(* to_rcmd)(struct target_ops *, const char *command, struct ui_file *output) TARGET_DEFAULT_FUNC(default_rcmd)
Definition: target.h:647
void target_load(const char *arg, int from_tty)
Definition: target.c:426
flash_preserve_mode
Definition: target.h:1483
int(* to_core_of_thread)(struct target_ops *, ptid_t ptid) TARGET_DEFAULT_RETURN(-1)
Definition: target.h:1063
int(* to_follow_fork)(struct target_ops *, int, int) TARGET_DEFAULT_FUNC(default_follow_fork)
Definition: target.h:592
void target_commit_resume()
Definition: target.c:2234
struct btrace_target_info * target_enable_btrace(ptid_t ptid, const struct btrace_config *)
Definition: target.c:3561
void target_save_record(const char *filename)
Definition: target.c:3611
int(* to_set_syscall_catchpoint)(struct target_ops *, int, bool, int, gdb::array_view< const int >) TARGET_DEFAULT_RETURN(1)
Definition: target.h:600
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
int target_is_non_stop_p(void)
Definition: target.c:3917
void(* to_close)(struct target_ops *)
Definition: target.h:431
int target_supports_btrace(enum btrace_format)
Definition: target.c:3553
int default_memory_insert_breakpoint(struct gdbarch *, struct bp_target_info *)
Definition: mem-break.c:37
int target_fileio_pread(int fd, gdb_byte *read_buf, int len, ULONGEST offset, int *target_errno)
Definition: target.c:2871
const struct target_desc * target_read_description(struct target_ops *)
Definition: target.c:2313
void(* to_insn_history)(struct target_ops *, int size, gdb_disassembly_flags flags) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:1199
void(* to_set_disconnected_tracing)(struct target_ops *, int val) TARGET_DEFAULT_IGNORE()
Definition: target.h:1041
const char * target_xfer_status_to_string(enum target_xfer_status status)
Definition: target.c:883
int target_verify_memory(const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
Definition: target.c:3503
#define VEC(T)
Definition: vec.h:414
int(* to_supports_enable_disable_tracepoint)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:838
int(* to_remove_watchpoint)(struct target_ops *, CORE_ADDR, int, enum target_hw_bp_type, struct expression *) TARGET_DEFAULT_RETURN(-1)
Definition: target.h:516
void(* to_insn_history_range)(struct target_ops *, ULONGEST begin, ULONGEST end, gdb_disassembly_flags flags) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:1214
int(* to_region_ok_for_hw_watchpoint)(struct target_ops *, CORE_ADDR, int) TARGET_DEFAULT_FUNC(default_region_ok_for_hw_watchpoint)
Definition: target.h:543
std::vector< memory_read_result > read_memory_robust(struct target_ops *ops, const ULONGEST offset, const LONGEST len)
Definition: target.c:1731
void(* to_info_record)(struct target_ops *) TARGET_DEFAULT_IGNORE()
Definition: target.h:1158
void get_target_memory(struct target_ops *ops, CORE_ADDR addr, gdb_byte *buf, LONGEST len)
Definition: target.c:1961
int target_write_raw_memory(CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len)
Definition: target.c:1469
int(* to_can_use_hw_breakpoint)(struct target_ops *, enum bptype, int, int) TARGET_DEFAULT_RETURN(0)
Definition: target.h:502
void * owner
Definition: target.h:2327
void target_interrupt(ptid_t ptid)
Definition: target.c:3328
void(* to_trace_stop)(struct target_ops *) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:997
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
static int default_follow_fork(struct target_ops *self, int follow_child, int detach_fork)
Definition: target.c:2264
int(* to_supports_string_tracing)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:845
#define TARGET_DEFAULT_IGNORE()
Definition: target.h:407
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
btrace_format
Definition: btrace-common.h:54
#define ULONGEST_MAX
Definition: defs.h:493
struct type * typep
Definition: linespec.c:82
void(* to_set_trace_buffer_size)(struct target_ops *, LONGEST val) TARGET_DEFAULT_IGNORE()
Definition: target.h:1046
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(* to_get_trace_state_variable_value)(struct target_ops *, int tsv, LONGEST *val) TARGET_DEFAULT_RETURN(0)
Definition: target.h:1013
int may_insert_tracepoints
int target_async_permitted
Definition: target.c:3876
int target_supports_delete_record(void)
Definition: target.c:3619
struct target_ops * find_target_beneath(struct target_ops *)
Definition: target.c:3153
int(* to_remove_exec_catchpoint)(struct target_ops *, int) TARGET_DEFAULT_RETURN(1)
Definition: target.h:596
void target_close(struct target_ops *targ)
Definition: target.c:3290
scoped_restore_tmpl< int > make_scoped_defer_target_commit_resume()
Definition: target.c:2245
trace_find_type
Definition: tracepoint.h:384
gdb_byte * data
Definition: target.h:1475
int target_remove_breakpoint(struct gdbarch *gdbarch, struct bp_target_info *bp_tgt, enum remove_bp_reason reason)
Definition: target.c:2003
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(* to_files_info)(struct target_ops *) TARGET_DEFAULT_IGNORE()
Definition: target.h:464
int default_auxv_parse(struct target_ops *ops, gdb_byte **readptr, gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
Definition: auxv.c:258
void target_thread_events(int enable)
Definition: target.c:3869
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
int target_fileio_close(int fd, int *target_errno)
Definition: target.c:2915
int target_record_is_replaying(ptid_t ptid)
Definition: target.c:3650
int remote_debug
Definition: top.c:171
int(* to_remove_fork_catchpoint)(struct target_ops *, int) TARGET_DEFAULT_RETURN(1)
Definition: target.h:586
int number
Definition: target.h:108
void(* to_disable_tracepoint)(struct target_ops *, struct bp_location *location) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:973
struct address_space * target_thread_address_space(ptid_t)
Definition: target.c:2689
int(* to_record_is_replaying)(struct target_ops *, ptid_t ptid) TARGET_DEFAULT_RETURN(0)
Definition: target.h:1171
void noprocess(void) ATTRIBUTE_NORETURN
Definition: target.c:548
int(* to_can_do_single_step)(struct target_ops *) TARGET_DEFAULT_RETURN(-1)
Definition: target.h:557
static void default_terminal_info(struct target_ops *self, const char *args, int from_tty)
Definition: target.c:554
void * to_data
Definition: target.h:421
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_prepare_to_generate_core(void)
Definition: target.c:3764
void target_pass_signals(int nsig, unsigned char *pass_signals)
Definition: target.c:2251
int target_read_code(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
Definition: target.c:1433
int may_stop
void target_kill(void)
Definition: target.c:420
void target_fetch_registers(struct regcache *regcache, int regno)
Definition: target.c:3437
struct target_ops * find_run_target(void)
Definition: target.c:2567
void(* to_prepare_to_generate_core)(struct target_ops *) TARGET_DEFAULT_IGNORE()
Definition: target.h:1254
void target_flash_done(void)
Definition: target.c:1520
LONGEST target_read_alloc(struct target_ops *ops, enum target_object object, const char *annex, gdb_byte **buf_p)
Definition: target.c:1918
void(* to_call_history_range)(struct target_ops *, ULONGEST begin, ULONGEST end, int flags) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:1235
std::unique_ptr< T, xfree_deleter< T > > unique_xmalloc_ptr
void target_call_history_range(ULONGEST begin, ULONGEST end, int flags)
Definition: target.c:3740
#define target_debug_print_step(X)
Definition: target-debug.h:186
VEC(static_tracepoint_marker_p) *(*to_static_tracepoint_markers_by_strid)(struct target_ops *
struct target_ops current_target
int default_child_has_execution(struct target_ops *ops, ptid_t the_ptid)
Definition: target.c:236
int(* to_trace_find)(struct target_ops *, enum trace_find_type type, int num, CORE_ADDR addr1, CORE_ADDR addr2, int *tpp) TARGET_DEFAULT_RETURN(-1)
Definition: target.h:1005
static int default_region_ok_for_hw_watchpoint(struct target_ops *self, CORE_ADDR addr, int len)
Definition: target.c:3114
int target_has_all_memory_1(void)
Definition: target.c:248
void push_target(struct target_ops *)
Definition: target.c:642
int target_has_stack_1(void)
Definition: target.c:272
int(* to_watchpoint_addr_within_range)(struct target_ops *, CORE_ADDR, CORE_ADDR, int) TARGET_DEFAULT_FUNC(default_watchpoint_addr_within_range)
Definition: target.h:537
#define TARGET_DEFAULT_RETURN(ARG)
Definition: target.h:409
LONGEST(* to_get_raw_trace_data)(struct target_ops *, gdb_byte *buf, ULONGEST offset, LONGEST len) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:1028
int(* to_record_will_replay)(struct target_ops *, ptid_t ptid, int dir) TARGET_DEFAULT_RETURN(0)
Definition: target.h:1176
static void generic_tls_error(void)
Definition: target.c:51
int(* to_remove_vfork_catchpoint)(struct target_ops *, int) TARGET_DEFAULT_RETURN(1)
Definition: target.h:590
Definition: ptid.h:35
int(* to_supports_stopped_by_sw_breakpoint)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:486
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
int(* to_get_min_fast_tracepoint_insn_len)(struct target_ops *) TARGET_DEFAULT_RETURN(-1)
Definition: target.h:1036
static struct gdbarch * default_thread_architecture(struct target_ops *ops, ptid_t ptid)
Definition: target.c:3129
int(* to_can_run)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:611
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
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(* to_insert_exec_catchpoint)(struct target_ops *, int) TARGET_DEFAULT_RETURN(1)
Definition: target.h:594
void update_target_permissions(void)
Definition: target.c:3978
void target_preopen(int)
Definition: target.c:2121
struct target_section * sections
Definition: target.h:2334
void(* to_set_permissions)(struct target_ops *) TARGET_DEFAULT_IGNORE()
Definition: target.h:1081
target_xfer_status
Definition: target.h:206
int(* to_masked_watch_num_registers)(struct target_ops *, CORE_ADDR, CORE_ADDR) TARGET_DEFAULT_RETURN(-1)
Definition: target.h:551
int unpush_target(struct target_ops *)
Definition: target.c:689
int target_has_execution_1(ptid_t)
Definition: target.c:296
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
void target_goto_record_end(void)
Definition: target.c:3682
void async_callback_ftype(enum inferior_event_type event_type, void *context)
Definition: target.h:375
Definition: gdbtypes.h:749
void(* to_trace_set_readonly_regions)(struct target_ops *) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:980
static struct address_space * default_thread_address_space(struct target_ops *self, ptid_t ptid)
Definition: target.c:2670
Definition: target.h:95
std::vector< mem_region > target_memory_map(void)
Definition: target.c:1483
void target_flash_erase(ULONGEST address, LONGEST length)
Definition: target.c:1514
int(* to_fileio_fstat)(struct target_ops *, int fd, struct stat *sb, int *target_errno)
Definition: target.h:915
void target_follow_exec(struct inferior *inf, char *execd_pathname)
Definition: target.c:2285
#define enable()
Definition: ser-go32.c:239
Definition: gnu-nat.c:174
exec_direction_kind
Definition: infrun.h:67
void(* to_get_tracepoint_status)(struct target_ops *, struct breakpoint *tp, struct uploaded_tp *utp) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:991
~memory_read_result()=default
gdb::unique_xmalloc_ptr< gdb_byte > data
Definition: target.h:290
int default_child_has_all_memory(struct target_ops *ops)
Definition: target.c:196
char * target_fileio_readlink(struct inferior *inf, const char *filename, int *target_errno)
Definition: target.c:2967
int(* to_upload_trace_state_variables)(struct target_ops *, struct uploaded_tsv **utsvp) TARGET_DEFAULT_RETURN(0)
Definition: target.h:1024
static const char * type
Definition: language.c:113
enum target_xfer_status target_xfer_partial_ftype(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)
ULONGEST get_target_memory_unsigned(struct target_ops *ops, CORE_ADDR addr, int len, enum bfd_endian byte_order)
Definition: target.c:1974
DEF_VEC_O(memory_write_request_s)
int(* to_augmented_libraries_svr4_read)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:1241
void add_target_with_completer(struct target_ops *t, completer_ftype *completer)
Definition: target.c:368
int(* to_insert_fork_catchpoint)(struct target_ops *, int) TARGET_DEFAULT_RETURN(1)
Definition: target.h:584
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
Definition: gnu-nat.c:1822
int target_read_stack(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
Definition: target.c:1418
const char * to_doc
Definition: target.h:417
void target_call_history(int size, int flags)
Definition: target.c:3724
int(* to_insert_watchpoint)(struct target_ops *, CORE_ADDR, int, enum target_hw_bp_type, struct expression *) TARGET_DEFAULT_RETURN(-1)
Definition: target.h:519
CORE_ADDR endaddr
Definition: target.h:2318
btrace_error
thread_control_capabilities
Definition: target.h:93
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
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
memory_read_result(ULONGEST begin_, ULONGEST end_, gdb::unique_xmalloc_ptr< gdb_byte > &&data_)
Definition: target.h:271
int default_child_has_memory(struct target_ops *ops)
Definition: target.c:206
int(* to_get_tib_address)(struct target_ops *, ptid_t ptid, CORE_ADDR *addr) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:1076
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
traceframe_info_up(* to_traceframe_info)(struct target_ops *) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:1099
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
void target_resume(ptid_t ptid, int step, enum gdb_signal signal)
Definition: target.c:2215
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
ULONGEST end
Definition: target.h:288
static enum exec_direction_kind default_execution_direction(struct target_ops *self)
Definition: target.c:572
int simple_verify_memory(struct target_ops *ops, const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
Definition: target.c:3464
int target_insert_mask_watchpoint(CORE_ADDR, CORE_ADDR, enum target_hw_bp_type)
Definition: target.c:3513
target_object
Definition: target.h:132
int(* to_insert_hw_breakpoint)(struct target_ops *, struct gdbarch *, struct bp_target_info *) TARGET_DEFAULT_RETURN(-1)
Definition: target.h:507
void add_deprecated_target_alias(struct target_ops *t, const char *alias)
Definition: target.c:403
void flash_erase_command(const char *cmd, int from_tty)
Definition: target.c:3808
record_method
Definition: record.h:41
bptype
Definition: breakpoint.h:67
ULONGEST begin
Definition: target.h:286
int(* to_can_run_breakpoint_commands)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:855
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
static void target_debug_print_signals(unsigned char *sigs)
Definition: target-debug.h:199
void(* to_commit_resume)(struct target_ops *) TARGET_DEFAULT_IGNORE()
Definition: target.h:451
enum auto_boolean target_non_stop_enabled
Definition: target.c:3927
void(* to_disconnect)(struct target_ops *, const char *, int) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:445
int(* to_can_download_tracepoint)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:959
void(* to_log_command)(struct target_ops *, const char *) TARGET_DEFAULT_IGNORE()
Definition: target.h:652
scoped_restore_tmpl< int > make_scoped_restore_show_memory_breakpoints(int show)
Definition: target.c:1250
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
int(* to_auxv_parse)(struct target_ops *ops, gdb_byte **readptr, gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp) TARGET_DEFAULT_FUNC(default_auxv_parse)
Definition: target.h:805
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
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
void target_call_history_from(ULONGEST begin, int size, int flags)
Definition: target.c:3732
void(* to_download_tracepoint)(struct target_ops *, struct bp_location *location) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:953
inferior_event_type
Definition: target.h:120
static void default_mourn_inferior(struct target_ops *self)
Definition: target.c:2291
int(* to_remove_hw_breakpoint)(struct target_ops *, struct gdbarch *, struct bp_target_info *) TARGET_DEFAULT_RETURN(-1)
Definition: target.h:510
bfd_byte gdb_byte
Definition: common-types.h:38
enum exec_direction_kind(* to_execution_direction)(struct target_ops *) TARGET_DEFAULT_FUNC(default_execution_direction)
Definition: target.h:828
std::unique_ptr< traceframe_info > traceframe_info_up
Definition: tracepoint.h:40
void(* to_fetch_registers)(struct target_ops *, struct regcache *, int) TARGET_DEFAULT_IGNORE()
Definition: target.h:457
void target_require_runnable(void)
Definition: target.c:2455
int target_info_proc(const char *, enum info_proc_what)
Definition: target.c:2588
void(* to_mourn_inferior)(struct target_ops *) TARGET_DEFAULT_FUNC(default_mourn_inferior)
Definition: target.h:606
int(* to_set_trace_notes)(struct target_ops *, const char *user, const char *notes, const char *stopnotes) TARGET_DEFAULT_RETURN(0)
Definition: target.h:1051
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
const char *id TARGET_DEFAULT_NORETURN(tcomplain())
int may_insert_breakpoints
void pop_all_targets_above(enum strata above_stratum)
Definition: target.c:743
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
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 target_insn_history(int size, gdb_disassembly_flags flags)
Definition: target.c:3698
struct target_section * target_section_by_addr(struct target_ops *target, CORE_ADDR addr)
Definition: target.c:982
int(* to_save_trace_data)(struct target_ops *, const char *filename) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:1017
void(* to_download_trace_state_variable)(struct target_ops *, struct trace_state_variable *tsv) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:963
int target_follow_fork(int follow_child, int detach_fork)
Definition: target.c:2276
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
int target_write_memory_blocks(VEC(memory_write_request_s) *requests, enum flash_preserve_mode preserve_flash_p, void(*progress_cb)(ULONGEST, void *))
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
void(* to_kill)(struct target_ops *) TARGET_DEFAULT_NORETURN(noprocess())
Definition: target.h:570
int target_insert_breakpoint(struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
Definition: target.c:1987
int target_fileio_fstat(int fd, struct stat *sb, int *target_errno)
Definition: target.c:2895
int target_read_string(CORE_ADDR, char **, int, int *)
Definition: target.c:907
int(* to_can_accel_watchpoint_condition)(struct target_ops *, CORE_ADDR, int, int, struct expression *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:547
enum strata to_stratum
Definition: target.h:656
int(* to_stopped_by_sw_breakpoint)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:483
#define TARGET_DEBUG_PRINTER(FUNC)
Definition: target.h:386
void(* to_goto_record_end)(struct target_ops *) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:1188
void(* to_set_circular_trace_buffer)(struct target_ops *, int val) TARGET_DEFAULT_IGNORE()
Definition: target.h:1043
static char * dummy_make_corefile_notes(struct target_ops *self, bfd *ignore1, int *ignore2)
Definition: target.c:3259
void(* to_open)(const char *, int)
Definition: target.h:426
int offset
Definition: agent.c:65
int target_core_of_thread(ptid_t ptid)
Definition: target.c:3458
void add_target(struct target_ops *)
Definition: target.c:395
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(* to_post_attach)(struct target_ops *, int) TARGET_DEFAULT_IGNORE()
Definition: target.h:441
int(* to_can_async_p)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:666
int target_read_raw_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
Definition: target.c:1403
int may_write_registers
static constexpr ptid_t lwp
int target_supports_disable_randomization(void)
Definition: target.c:2629
int(* to_static_tracepoint_marker_at)(struct target_ops *, CORE_ADDR, struct static_tracepoint_marker *marker) TARGET_DEFAULT_RETURN(0)
Definition: target.h:1086
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 memory_remove_breakpoint(struct target_ops *, struct gdbarch *, struct bp_target_info *, enum remove_bp_reason)
Definition: mem-break.c:94
int default_child_has_stack(struct target_ops *ops)
Definition: target.c:216
int(* to_stopped_by_watchpoint)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:531
int to_have_steppable_watchpoint
Definition: target.h:533
int(* to_get_trace_status)(struct target_ops *, struct trace_status *ts) TARGET_DEFAULT_RETURN(-1)
Definition: target.h:988
void initialize_targets(void)
Definition: target.c:4070
char * target_options_to_string(int target_options)
Definition: target.c:3419
target_hw_bp_type
Definition: break-common.h:22
int target_remove_mask_watchpoint(CORE_ADDR, CORE_ADDR, enum target_hw_bp_type)
Definition: target.c:3524
void target_update_thread_list(void)
Definition: target.c:3310
void(* to_terminal_ours)(struct target_ops *) TARGET_DEFAULT_IGNORE()
Definition: target.h:566
int(* to_stopped_by_hw_breakpoint)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:496
enum record_method target_record_method(ptid_t ptid)
Definition: target.c:3642
const struct btrace_config * target_btrace_conf(const struct btrace_target_info *)
Definition: target.c:3595
int target_has_registers_1(void)
Definition: target.c:284
int baud_rate
Definition: serial.c:639
void(* to_enable_tracepoint)(struct target_ops *, struct bp_location *location) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:968
static int default_verify_memory(struct target_ops *self, const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
Definition: target.c:3494
struct thread_info * target_thread_handle_to_thread_info(const gdb_byte *thread_handle, int handle_len, struct inferior *inf)
Definition: target.c:2206
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
void target_async(int enable)
Definition: target.c:3860
auto_boolean
Definition: defs.h:237
const char * to_shortname
Definition: target.h:415
int to_have_continuable_watchpoint
Definition: target.h:534
unsigned long long ULONGEST
Definition: common-types.h:53
target_xfer_partial_ftype target_xfer_partial
int to_magic
Definition: target.h:1261
void target_stop_recording(void)
Definition: target.c:3603
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
int serial_parity
Definition: serial.c:651
void target_announce_detach(int from_tty)
Definition: target.c:3177
void target_program_signals(int nsig, unsigned char *program_signals)
Definition: target.c:2257
int(* to_has_all_memory)(struct target_ops *)
Definition: target.h:657
void(* to_interrupt)(struct target_ops *, ptid_t) TARGET_DEFAULT_IGNORE()
Definition: target.h:643
void(* to_done_generating_core)(struct target_ops *) TARGET_DEFAULT_IGNORE()
Definition: target.h:1258
struct target_ops * find_target_at(enum strata stratum)
Definition: target.c:3161
int(* to_fileio_unlink)(struct target_ops *, struct inferior *inf, const char *filename, int *target_errno)
Definition: target.h:926
void target_insn_history_from(ULONGEST from, int size, gdb_disassembly_flags flags)
Definition: target.c:3706
void(* to_create_inferior)(struct target_ops *, const char *, const std::string &, char **, int)
Definition: target.h:579
int(* to_insert_vfork_catchpoint)(struct target_ops *, int) TARGET_DEFAULT_RETURN(1)
Definition: target.h:588
void target_record_stop_replaying(void)
Definition: target.c:3666
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
const char * target_pid_to_str(ptid_t ptid)
Definition: target.c:2194
void(* to_attach)(struct target_ops *ops, const char *, int)
Definition: target.h:440
const struct frame_unwind * target_get_unwinder(void)
Definition: target.c:3748
void target_disable_btrace(struct btrace_target_info *btinfo)
Definition: target.c:3569
void(* to_follow_exec)(struct target_ops *, struct inferior *, char *) TARGET_DEFAULT_IGNORE()
Definition: target.h:598
void pop_all_targets_at_and_above(enum strata stratum)
Definition: target.c:752
int(* to_use_agent)(struct target_ops *, int use) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:1104
static int detach_fork
Definition: infrun.c:154
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
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
int(* to_stopped_data_address)(struct target_ops *, CORE_ADDR *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:535
int target_record_will_replay(ptid_t ptid, int dir)
Definition: target.c:3658
void(* to_update_thread_list)(struct target_ops *) TARGET_DEFAULT_IGNORE()
Definition: target.h:628
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(* to_prepare_to_store)(struct target_ops *, struct regcache *) TARGET_DEFAULT_NORETURN(noprocess())
Definition: target.h:461
void target_disconnect(const char *, int)
Definition: target.c:2164
DEF_VEC_P(static_tracepoint_marker_p)
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 target_masked_watch_num_registers(CORE_ADDR addr, CORE_ADDR mask)
Definition: target.c:3535
const char * name
Definition: target.h:111
void default_target_pass_ctrlc(struct target_ops *ops)
Definition: target.c:3350
int(* to_has_registers)(struct target_ops *)
Definition: target.h:660
void target_stop(ptid_t ptid)
Definition: target.c:3316
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
void pop_all_targets(void)
Definition: target.c:759
void target_teardown_btrace(struct btrace_target_info *btinfo)
Definition: target.c:3577
int target_fileio_open(struct inferior *inf, const char *filename, int flags, int mode, int *target_errno)
Definition: target.c:2826
static void target_debug_print_options(int options)
Definition: target-debug.h:190
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
ptid_t(* to_get_ada_task_ptid)(struct target_ops *, long lwp, long thread) TARGET_DEFAULT_FUNC(default_get_ada_task_ptid)
Definition: target.h:797
static void tcomplain(void)
Definition: target.c:541
void(* to_disable_btrace)(struct target_ops *, struct btrace_target_info *tinfo) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:1124
int target_ranged_break_num_registers(void)
Definition: target.c:3545
void target_pre_inferior(int)
Definition: target.c:2054
const struct frame_unwind * target_get_tailcall_unwinder(void)
Definition: target.c:3756
size_t size
Definition: go32-nat.c:242
remove_bp_reason
Definition: breakpoint.h:47
struct target_section_table * target_get_section_table(struct target_ops *target)
Definition: target.c:974
void target_goto_record_begin(void)
Definition: target.c:3674
#define TARGET_DEFAULT_FUNC(ARG)
Definition: target.h:410
long long LONGEST
Definition: common-types.h:52
struct target_ops * beneath
Definition: target.h:414
int(* to_can_execute_reverse)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:822
void(* to_load)(struct target_ops *, const char *, int) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:572
void(* to_terminal_info)(struct target_ops *, const char *, int) TARGET_DEFAULT_FUNC(default_terminal_info)
Definition: target.h:568
void target_goto_record(ULONGEST insn)
Definition: target.c:3690
int(* to_filesystem_is_local)(struct target_ops *) TARGET_DEFAULT_RETURN(1)
Definition: target.h:883
int(* to_supports_multi_process)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:833
void(* to_post_startup_inferior)(struct target_ops *, ptid_t) TARGET_DEFAULT_IGNORE()
Definition: target.h:582
int(* to_can_use_agent)(struct target_ops *) TARGET_DEFAULT_RETURN(0)
Definition: target.h:1108
int target_has_execution_current(void)
Definition: target.c:308
void(* to_goto_record)(struct target_ops *, ULONGEST insn) TARGET_DEFAULT_NORETURN(tcomplain())
Definition: target.h:1192
LONGEST target_fileio_read_alloc(struct inferior *inf, const char *filename, gdb_byte **buf_p)
Definition: target.c:3073
int target_supports_terminal_ours(void)
Definition: target.c:526
struct static_tracepoint_marker * static_tracepoint_marker_p
Definition: target.h:230
int to_attach_no_wait
Definition: target.h:663