xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/target.h (revision 8b657b0747480f8989760d71343d6dd33f8d4cf9)
1 /* Interface between GDB and target environments, including files and processes
2 
3    Copyright (C) 1990-2023 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;
32 struct trace_state_variable;
33 struct trace_status;
34 struct uploaded_tsv;
35 struct uploaded_tp;
36 struct static_tracepoint_marker;
37 struct traceframe_info;
38 struct expression;
39 struct dcache_struct;
40 struct inferior;
41 
42 #include "infrun.h" /* For enum exec_direction_kind.  */
43 #include "breakpoint.h" /* For enum bptype.  */
44 #include "gdbsupport/scoped_restore.h"
45 #include "gdbsupport/refcounted-object.h"
46 #include "target-section.h"
47 
48 /* This include file defines the interface between the main part
49    of the debugger, and the part which is target-specific, or
50    specific to the communications interface between us and the
51    target.
52 
53    A TARGET is an interface between the debugger and a particular
54    kind of file or process.  Targets can be STACKED in STRATA,
55    so that more than one target can potentially respond to a request.
56    In particular, memory accesses will walk down the stack of targets
57    until they find a target that is interested in handling that particular
58    address.  STRATA are artificial boundaries on the stack, within
59    which particular kinds of targets live.  Strata exist so that
60    people don't get confused by pushing e.g. a process target and then
61    a file target, and wondering why they can't see the current values
62    of variables any more (the file target is handling them and they
63    never get to the process target).  So when you push a file target,
64    it goes into the file stratum, which is always below the process
65    stratum.
66 
67    Note that rather than allow an empty stack, we always have the
68    dummy target at the bottom stratum, so we can call the target
69    methods without checking them.  */
70 
71 #include "target/target.h"
72 #include "target/resume.h"
73 #include "target/wait.h"
74 #include "target/waitstatus.h"
75 #include "bfd.h"
76 #include "symtab.h"
77 #include "memattr.h"
78 #include "gdbsupport/gdb_signals.h"
79 #include "btrace.h"
80 #include "record.h"
81 #include "command.h"
82 #include "disasm-flags.h"
83 #include "tracepoint.h"
84 #include "gdbsupport/fileio.h"
85 
86 #include "gdbsupport/break-common.h" /* For enum target_hw_bp_type.  */
87 
88 enum strata
89   {
90     dummy_stratum,		/* The lowest of the low */
91     file_stratum,		/* Executable files, etc */
92     process_stratum,		/* Executing processes or core dump files */
93     thread_stratum,		/* Executing threads */
94     record_stratum,		/* Support record debugging */
95     arch_stratum,		/* Architecture overrides */
96     debug_stratum		/* Target debug.  Must be last.  */
97   };
98 
99 enum thread_control_capabilities
100   {
101     tc_none = 0,		/* Default: can't control thread execution.  */
102     tc_schedlock = 1,		/* Can lock the thread scheduler.  */
103   };
104 
105 /* The structure below stores information about a system call.
106    It is basically used in the "catch syscall" command, and in
107    every function that gives information about a system call.
108 
109    It's also good to mention that its fields represent everything
110    that we currently know about a syscall in GDB.  */
111 struct syscall
112   {
113     /* The syscall number.  */
114     int number;
115 
116     /* The syscall name.  */
117     const char *name;
118   };
119 
120 /* Return a pretty printed form of TARGET_OPTIONS.  */
121 extern std::string target_options_to_string (target_wait_flags target_options);
122 
123 /* Possible types of events that the inferior handler will have to
124    deal with.  */
125 enum inferior_event_type
126   {
127     /* Process a normal inferior event which will result in target_wait
128        being called.  */
129     INF_REG_EVENT,
130     /* We are called to do stuff after the inferior stops.  */
131     INF_EXEC_COMPLETE,
132   };
133 
134 /* Target objects which can be transfered using target_read,
135    target_write, et cetera.  */
136 
137 enum target_object
138 {
139   /* AVR target specific transfer.  See "avr-tdep.c" and "remote.c".  */
140   TARGET_OBJECT_AVR,
141   /* Transfer up-to LEN bytes of memory starting at OFFSET.  */
142   TARGET_OBJECT_MEMORY,
143   /* Memory, avoiding GDB's data cache and trusting the executable.
144      Target implementations of to_xfer_partial never need to handle
145      this object, and most callers should not use it.  */
146   TARGET_OBJECT_RAW_MEMORY,
147   /* Memory known to be part of the target's stack.  This is cached even
148      if it is not in a region marked as such, since it is known to be
149      "normal" RAM.  */
150   TARGET_OBJECT_STACK_MEMORY,
151   /* Memory known to be part of the target code.   This is cached even
152      if it is not in a region marked as such.  */
153   TARGET_OBJECT_CODE_MEMORY,
154   /* Kernel Unwind Table.  See "ia64-tdep.c".  */
155   TARGET_OBJECT_UNWIND_TABLE,
156   /* Transfer auxilliary vector.  */
157   TARGET_OBJECT_AUXV,
158   /* StackGhost cookie.  See "sparc-tdep.c".  */
159   TARGET_OBJECT_WCOOKIE,
160   /* Target memory map in XML format.  */
161   TARGET_OBJECT_MEMORY_MAP,
162   /* Flash memory.  This object can be used to write contents to
163      a previously erased flash memory.  Using it without erasing
164      flash can have unexpected results.  Addresses are physical
165      address on target, and not relative to flash start.  */
166   TARGET_OBJECT_FLASH,
167   /* Available target-specific features, e.g. registers and coprocessors.
168      See "target-descriptions.c".  ANNEX should never be empty.  */
169   TARGET_OBJECT_AVAILABLE_FEATURES,
170   /* Currently loaded libraries, in XML format.  */
171   TARGET_OBJECT_LIBRARIES,
172   /* Currently loaded libraries specific for SVR4 systems, in XML format.  */
173   TARGET_OBJECT_LIBRARIES_SVR4,
174   /* Currently loaded libraries specific to AIX systems, in XML format.  */
175   TARGET_OBJECT_LIBRARIES_AIX,
176   /* Get OS specific data.  The ANNEX specifies the type (running
177      processes, etc.).  The data being transfered is expected to follow
178      the DTD specified in features/osdata.dtd.  */
179   TARGET_OBJECT_OSDATA,
180   /* Extra signal info.  Usually the contents of `siginfo_t' on unix
181      platforms.  */
182   TARGET_OBJECT_SIGNAL_INFO,
183   /* The list of threads that are being debugged.  */
184   TARGET_OBJECT_THREADS,
185   /* Collected static trace data.  */
186   TARGET_OBJECT_STATIC_TRACE_DATA,
187   /* Traceframe info, in XML format.  */
188   TARGET_OBJECT_TRACEFRAME_INFO,
189   /* Load maps for FDPIC systems.  */
190   TARGET_OBJECT_FDPIC,
191   /* Darwin dynamic linker info data.  */
192   TARGET_OBJECT_DARWIN_DYLD_INFO,
193   /* OpenVMS Unwind Information Block.  */
194   TARGET_OBJECT_OPENVMS_UIB,
195   /* Branch trace data, in XML format.  */
196   TARGET_OBJECT_BTRACE,
197   /* Branch trace configuration, in XML format.  */
198   TARGET_OBJECT_BTRACE_CONF,
199   /* The pathname of the executable file that was run to create
200      a specified process.  ANNEX should be a string representation
201      of the process ID of the process in question, in hexadecimal
202      format.  */
203   TARGET_OBJECT_EXEC_FILE,
204   /* FreeBSD virtual memory mappings.  */
205   TARGET_OBJECT_FREEBSD_VMMAP,
206   /* FreeBSD process strings.  */
207   TARGET_OBJECT_FREEBSD_PS_STRINGS,
208   /* Possible future objects: TARGET_OBJECT_FILE, ...  */
209 };
210 
211 /* Possible values returned by target_xfer_partial, etc.  */
212 
213 enum target_xfer_status
214 {
215   /* Some bytes are transferred.  */
216   TARGET_XFER_OK = 1,
217 
218   /* No further transfer is possible.  */
219   TARGET_XFER_EOF = 0,
220 
221   /* The piece of the object requested is unavailable.  */
222   TARGET_XFER_UNAVAILABLE = 2,
223 
224   /* Generic I/O error.  Note that it's important that this is '-1',
225      as we still have target_xfer-related code returning hardcoded
226      '-1' on error.  */
227   TARGET_XFER_E_IO = -1,
228 
229   /* Keep list in sync with target_xfer_status_to_string.  */
230 };
231 
232 /* Return the string form of STATUS.  */
233 
234 extern const char *
235   target_xfer_status_to_string (enum target_xfer_status status);
236 
237 typedef enum target_xfer_status
238   target_xfer_partial_ftype (struct target_ops *ops,
239 			     enum target_object object,
240 			     const char *annex,
241 			     gdb_byte *readbuf,
242 			     const gdb_byte *writebuf,
243 			     ULONGEST offset,
244 			     ULONGEST len,
245 			     ULONGEST *xfered_len);
246 
247 enum target_xfer_status
248   raw_memory_xfer_partial (struct target_ops *ops, gdb_byte *readbuf,
249 			   const gdb_byte *writebuf, ULONGEST memaddr,
250 			   LONGEST len, ULONGEST *xfered_len);
251 
252 /* Request that OPS transfer up to LEN addressable units of the target's
253    OBJECT.  When reading from a memory object, the size of an addressable unit
254    is architecture dependent and can be found using
255    gdbarch_addressable_memory_unit_size.  Otherwise, an addressable unit is 1
256    byte long.  BUF should point to a buffer large enough to hold the read data,
257    taking into account the addressable unit size.  The OFFSET, for a seekable
258    object, specifies the starting point.  The ANNEX can be used to provide
259    additional data-specific information to the target.
260 
261    Return the number of addressable units actually transferred, or a negative
262    error code (an 'enum target_xfer_error' value) if the transfer is not
263    supported or otherwise fails.  Return of a positive value less than
264    LEN indicates that no further transfer is possible.  Unlike the raw
265    to_xfer_partial interface, callers of these functions do not need
266    to retry partial transfers.  */
267 
268 extern LONGEST target_read (struct target_ops *ops,
269 			    enum target_object object,
270 			    const char *annex, gdb_byte *buf,
271 			    ULONGEST offset, LONGEST len);
272 
273 struct memory_read_result
274 {
275   memory_read_result (ULONGEST begin_, ULONGEST end_,
276 		      gdb::unique_xmalloc_ptr<gdb_byte> &&data_)
277     : begin (begin_),
278       end (end_),
279       data (std::move (data_))
280   {
281   }
282 
283   ~memory_read_result () = default;
284 
285   memory_read_result (memory_read_result &&other) = default;
286 
287   DISABLE_COPY_AND_ASSIGN (memory_read_result);
288 
289   /* First address that was read.  */
290   ULONGEST begin;
291   /* Past-the-end address.  */
292   ULONGEST end;
293   /* The data.  */
294   gdb::unique_xmalloc_ptr<gdb_byte> data;
295 };
296 
297 extern std::vector<memory_read_result> read_memory_robust
298     (struct target_ops *ops, const ULONGEST offset, const LONGEST len);
299 
300 /* Request that OPS transfer up to LEN addressable units from BUF to the
301    target's OBJECT.  When writing to a memory object, the addressable unit
302    size is architecture dependent and can be found using
303    gdbarch_addressable_memory_unit_size.  Otherwise, an addressable unit is 1
304    byte long.  The OFFSET, for a seekable object, specifies the starting point.
305    The ANNEX can be used to provide additional data-specific information to
306    the target.
307 
308    Return the number of addressable units actually transferred, or a negative
309    error code (an 'enum target_xfer_status' value) if the transfer is not
310    supported or otherwise fails.  Return of a positive value less than
311    LEN indicates that no further transfer is possible.  Unlike the raw
312    to_xfer_partial interface, callers of these functions do not need to
313    retry partial transfers.  */
314 
315 extern LONGEST target_write (struct target_ops *ops,
316 			     enum target_object object,
317 			     const char *annex, const gdb_byte *buf,
318 			     ULONGEST offset, LONGEST len);
319 
320 /* Similar to target_write, except that it also calls PROGRESS with
321    the number of bytes written and the opaque BATON after every
322    successful partial write (and before the first write).  This is
323    useful for progress reporting and user interaction while writing
324    data.  To abort the transfer, the progress callback can throw an
325    exception.  */
326 
327 LONGEST target_write_with_progress (struct target_ops *ops,
328 				    enum target_object object,
329 				    const char *annex, const gdb_byte *buf,
330 				    ULONGEST offset, LONGEST len,
331 				    void (*progress) (ULONGEST, void *),
332 				    void *baton);
333 
334 /* Wrapper to perform a full read of unknown size.  OBJECT/ANNEX will be read
335    using OPS.  The return value will be uninstantiated if the transfer fails or
336    is not supported.
337 
338    This method should be used for objects sufficiently small to store
339    in a single xmalloc'd buffer, when no fixed bound on the object's
340    size is known in advance.  Don't try to read TARGET_OBJECT_MEMORY
341    through this function.  */
342 
343 extern gdb::optional<gdb::byte_vector> target_read_alloc
344     (struct target_ops *ops, enum target_object object, const char *annex);
345 
346 /* Read OBJECT/ANNEX using OPS.  The result is a NUL-terminated character vector
347    (therefore usable as a NUL-terminated string).  If an error occurs or the
348    transfer is unsupported, the return value will be uninstantiated.  Empty
349    objects are returned as allocated but empty strings.  Therefore, on success,
350    the returned vector is guaranteed to have at least one element.  A warning is
351    issued if the result contains any embedded NUL bytes.  */
352 
353 extern gdb::optional<gdb::char_vector> target_read_stralloc
354     (struct target_ops *ops, enum target_object object, const char *annex);
355 
356 /* See target_ops->to_xfer_partial.  */
357 extern target_xfer_partial_ftype target_xfer_partial;
358 
359 /* Wrappers to target read/write that perform memory transfers.  They
360    throw an error if the memory transfer fails.
361 
362    NOTE: cagney/2003-10-23: The naming schema is lifted from
363    "frame.h".  The parameter order is lifted from get_frame_memory,
364    which in turn lifted it from read_memory.  */
365 
366 extern void get_target_memory (struct target_ops *ops, CORE_ADDR addr,
367 			       gdb_byte *buf, LONGEST len);
368 extern ULONGEST get_target_memory_unsigned (struct target_ops *ops,
369 					    CORE_ADDR addr, int len,
370 					    enum bfd_endian byte_order);
371 
372 struct thread_info;		/* fwd decl for parameter list below: */
373 
374 /* The type of the callback to the to_async method.  */
375 
376 typedef void async_callback_ftype (enum inferior_event_type event_type,
377 				   void *context);
378 
379 /* Normally target debug printing is purely type-based.  However,
380    sometimes it is necessary to override the debug printing on a
381    per-argument basis.  This macro can be used, attribute-style, to
382    name the target debug printing function for a particular method
383    argument.  FUNC is the name of the function.  The macro's
384    definition is empty because it is only used by the
385    make-target-delegates script.  */
386 
387 #define TARGET_DEBUG_PRINTER(FUNC)
388 
389 /* These defines are used to mark target_ops methods.  The script
390    make-target-delegates scans these and auto-generates the base
391    method implementations.  There are four macros that can be used:
392 
393    1. TARGET_DEFAULT_IGNORE.  There is no argument.  The base method
394    does nothing.  This is only valid if the method return type is
395    'void'.
396 
397    2. TARGET_DEFAULT_NORETURN.  The argument is a function call, like
398    'tcomplain ()'.  The base method simply makes this call, which is
399    assumed not to return.
400 
401    3. TARGET_DEFAULT_RETURN.  The argument is a C expression.  The
402    base method returns this expression's value.
403 
404    4. TARGET_DEFAULT_FUNC.  The argument is the name of a function.
405    make-target-delegates does not generate a base method in this case,
406    but instead uses the argument function as the base method.  */
407 
408 #define TARGET_DEFAULT_IGNORE()
409 #define TARGET_DEFAULT_NORETURN(ARG)
410 #define TARGET_DEFAULT_RETURN(ARG)
411 #define TARGET_DEFAULT_FUNC(ARG)
412 
413 /* Each target that can be activated with "target TARGET_NAME" passes
414    the address of one of these objects to add_target, which uses the
415    object's address as unique identifier, and registers the "target
416    TARGET_NAME" command using SHORTNAME as target name.  */
417 
418 struct target_info
419 {
420   /* Name of this target.  */
421   const char *shortname;
422 
423   /* Name for printing.  */
424   const char *longname;
425 
426   /* Documentation.  Does not include trailing newline, and starts
427      with a one-line description (probably similar to longname).  */
428   const char *doc;
429 };
430 
431 struct target_ops
432   : public refcounted_object
433   {
434     /* Return this target's stratum.  */
435     virtual strata stratum () const = 0;
436 
437     /* To the target under this one.  */
438     target_ops *beneath () const;
439 
440     /* Free resources associated with the target.  Note that singleton
441        targets, like e.g., native targets, are global objects, not
442        heap allocated, and are thus only deleted on GDB exit.  The
443        main teardown entry point is the "close" method, below.  */
444     virtual ~target_ops () {}
445 
446     /* Return a reference to this target's unique target_info
447        object.  */
448     virtual const target_info &info () const = 0;
449 
450     /* Name this target type.  */
451     const char *shortname () const
452     { return info ().shortname; }
453 
454     const char *longname () const
455     { return info ().longname; }
456 
457     /* Close the target.  This is where the target can handle
458        teardown.  Heap-allocated targets should delete themselves
459        before returning.  */
460     virtual void close ();
461 
462     /* Attaches to a process on the target side.  Arguments are as
463        passed to the `attach' command by the user.  This routine can
464        be called when the target is not on the target-stack, if the
465        target_ops::can_run method returns 1; in that case, it must push
466        itself onto the stack.  Upon exit, the target should be ready
467        for normal operations, and should be ready to deliver the
468        status of the process immediately (without waiting) to an
469        upcoming target_wait call.  */
470     virtual bool can_attach ();
471     virtual void attach (const char *, int);
472     virtual void post_attach (int)
473       TARGET_DEFAULT_IGNORE ();
474 
475     /* Detaches from the inferior.  Note that on targets that support
476        async execution (i.e., targets where it is possible to detach
477        from programs with threads running), the target is responsible
478        for removing breakpoints from the program before the actual
479        detach, otherwise the program dies when it hits one.  */
480     virtual void detach (inferior *, int)
481       TARGET_DEFAULT_IGNORE ();
482 
483     virtual void disconnect (const char *, int)
484       TARGET_DEFAULT_NORETURN (tcomplain ());
485     virtual void resume (ptid_t,
486 			 int TARGET_DEBUG_PRINTER (target_debug_print_step),
487 			 enum gdb_signal)
488       TARGET_DEFAULT_NORETURN (noprocess ());
489 
490     /* Ensure that all resumed threads are committed to the target.
491 
492        See the description of
493        process_stratum_target::commit_resumed_state for more
494        details.  */
495     virtual void commit_resumed ()
496       TARGET_DEFAULT_IGNORE ();
497 
498     /* See target_wait's description.  Note that implementations of
499        this method must not assume that inferior_ptid on entry is
500        pointing at the thread or inferior that ends up reporting an
501        event.  The reported event could be for some other thread in
502        the current inferior or even for a different process of the
503        current target.  inferior_ptid may also be null_ptid on
504        entry.  */
505     virtual ptid_t wait (ptid_t, struct target_waitstatus *,
506 			 target_wait_flags options)
507       TARGET_DEFAULT_FUNC (default_target_wait);
508     virtual void fetch_registers (struct regcache *, int)
509       TARGET_DEFAULT_IGNORE ();
510     virtual void store_registers (struct regcache *, int)
511       TARGET_DEFAULT_NORETURN (noprocess ());
512     virtual void prepare_to_store (struct regcache *)
513       TARGET_DEFAULT_NORETURN (noprocess ());
514 
515     virtual void files_info ()
516       TARGET_DEFAULT_IGNORE ();
517     virtual int insert_breakpoint (struct gdbarch *,
518 				 struct bp_target_info *)
519       TARGET_DEFAULT_NORETURN (noprocess ());
520     virtual int remove_breakpoint (struct gdbarch *,
521 				 struct bp_target_info *,
522 				 enum remove_bp_reason)
523       TARGET_DEFAULT_NORETURN (noprocess ());
524 
525     /* Returns true if the target stopped because it executed a
526        software breakpoint.  This is necessary for correct background
527        execution / non-stop mode operation, and for correct PC
528        adjustment on targets where the PC needs to be adjusted when a
529        software breakpoint triggers.  In these modes, by the time GDB
530        processes a breakpoint event, the breakpoint may already be
531        done from the target, so GDB needs to be able to tell whether
532        it should ignore the event and whether it should adjust the PC.
533        See adjust_pc_after_break.  */
534     virtual bool stopped_by_sw_breakpoint ()
535       TARGET_DEFAULT_RETURN (false);
536     /* Returns true if the above method is supported.  */
537     virtual bool supports_stopped_by_sw_breakpoint ()
538       TARGET_DEFAULT_RETURN (false);
539 
540     /* Returns true if the target stopped for a hardware breakpoint.
541        Likewise, if the target supports hardware breakpoints, this
542        method is necessary for correct background execution / non-stop
543        mode operation.  Even though hardware breakpoints do not
544        require PC adjustment, GDB needs to be able to tell whether the
545        hardware breakpoint event is a delayed event for a breakpoint
546        that is already gone and should thus be ignored.  */
547     virtual bool stopped_by_hw_breakpoint ()
548       TARGET_DEFAULT_RETURN (false);
549     /* Returns true if the above method is supported.  */
550     virtual bool supports_stopped_by_hw_breakpoint ()
551       TARGET_DEFAULT_RETURN (false);
552 
553     virtual int can_use_hw_breakpoint (enum bptype, int, int)
554       TARGET_DEFAULT_RETURN (0);
555     virtual int ranged_break_num_registers ()
556       TARGET_DEFAULT_RETURN (-1);
557     virtual int insert_hw_breakpoint (struct gdbarch *,
558 				      struct bp_target_info *)
559       TARGET_DEFAULT_RETURN (-1);
560     virtual int remove_hw_breakpoint (struct gdbarch *,
561 				      struct bp_target_info *)
562       TARGET_DEFAULT_RETURN (-1);
563 
564     /* Documentation of what the two routines below are expected to do is
565        provided with the corresponding target_* macros.  */
566     virtual int remove_watchpoint (CORE_ADDR, int,
567 				 enum target_hw_bp_type, struct expression *)
568       TARGET_DEFAULT_RETURN (-1);
569     virtual int insert_watchpoint (CORE_ADDR, int,
570 				 enum target_hw_bp_type, struct expression *)
571       TARGET_DEFAULT_RETURN (-1);
572 
573     virtual int insert_mask_watchpoint (CORE_ADDR, CORE_ADDR,
574 					enum target_hw_bp_type)
575       TARGET_DEFAULT_RETURN (1);
576     virtual int remove_mask_watchpoint (CORE_ADDR, CORE_ADDR,
577 					enum target_hw_bp_type)
578       TARGET_DEFAULT_RETURN (1);
579     virtual bool stopped_by_watchpoint ()
580       TARGET_DEFAULT_RETURN (false);
581     virtual bool have_steppable_watchpoint ()
582       TARGET_DEFAULT_RETURN (false);
583     virtual bool stopped_data_address (CORE_ADDR *)
584       TARGET_DEFAULT_RETURN (false);
585     virtual bool watchpoint_addr_within_range (CORE_ADDR, CORE_ADDR, int)
586       TARGET_DEFAULT_FUNC (default_watchpoint_addr_within_range);
587 
588     /* Documentation of this routine is provided with the corresponding
589        target_* macro.  */
590     virtual int region_ok_for_hw_watchpoint (CORE_ADDR, int)
591       TARGET_DEFAULT_FUNC (default_region_ok_for_hw_watchpoint);
592 
593     virtual bool can_accel_watchpoint_condition (CORE_ADDR, int, int,
594 						 struct expression *)
595       TARGET_DEFAULT_RETURN (false);
596     virtual int masked_watch_num_registers (CORE_ADDR, CORE_ADDR)
597       TARGET_DEFAULT_RETURN (-1);
598 
599     /* Return 1 for sure target can do single step.  Return -1 for
600        unknown.  Return 0 for target can't do.  */
601     virtual int can_do_single_step ()
602       TARGET_DEFAULT_RETURN (-1);
603 
604     virtual bool supports_terminal_ours ()
605       TARGET_DEFAULT_RETURN (false);
606     virtual void terminal_init ()
607       TARGET_DEFAULT_IGNORE ();
608     virtual void terminal_inferior ()
609       TARGET_DEFAULT_IGNORE ();
610     virtual void terminal_save_inferior ()
611       TARGET_DEFAULT_IGNORE ();
612     virtual void terminal_ours_for_output ()
613       TARGET_DEFAULT_IGNORE ();
614     virtual void terminal_ours ()
615       TARGET_DEFAULT_IGNORE ();
616     virtual void terminal_info (const char *, int)
617       TARGET_DEFAULT_FUNC (default_terminal_info);
618     virtual void kill ()
619       TARGET_DEFAULT_NORETURN (noprocess ());
620     virtual void load (const char *, int)
621       TARGET_DEFAULT_NORETURN (tcomplain ());
622     /* Start an inferior process and set inferior_ptid to its pid.
623        EXEC_FILE is the file to run.
624        ALLARGS is a string containing the arguments to the program.
625        ENV is the environment vector to pass.  Errors reported with error().
626        On VxWorks and various standalone systems, we ignore exec_file.  */
627     virtual bool can_create_inferior ();
628     virtual void create_inferior (const char *, const std::string &,
629 				  char **, int);
630     virtual int insert_fork_catchpoint (int)
631       TARGET_DEFAULT_RETURN (1);
632     virtual int remove_fork_catchpoint (int)
633       TARGET_DEFAULT_RETURN (1);
634     virtual int insert_vfork_catchpoint (int)
635       TARGET_DEFAULT_RETURN (1);
636     virtual int remove_vfork_catchpoint (int)
637       TARGET_DEFAULT_RETURN (1);
638     virtual void follow_fork (inferior *, ptid_t, target_waitkind, bool, bool)
639       TARGET_DEFAULT_FUNC (default_follow_fork);
640     virtual int insert_exec_catchpoint (int)
641       TARGET_DEFAULT_RETURN (1);
642     virtual int remove_exec_catchpoint (int)
643       TARGET_DEFAULT_RETURN (1);
644     virtual void follow_exec (inferior *, ptid_t, const char *)
645       TARGET_DEFAULT_IGNORE ();
646     virtual int set_syscall_catchpoint (int, bool, int,
647 					gdb::array_view<const int>)
648       TARGET_DEFAULT_RETURN (1);
649     virtual void mourn_inferior ()
650       TARGET_DEFAULT_FUNC (default_mourn_inferior);
651 
652     /* Note that can_run is special and can be invoked on an unpushed
653        target.  Targets defining this method must also define
654        to_can_async_p and to_supports_non_stop.  */
655     virtual bool can_run ();
656 
657     /* Documentation of this routine is provided with the corresponding
658        target_* macro.  */
659     virtual void pass_signals (gdb::array_view<const unsigned char> TARGET_DEBUG_PRINTER (target_debug_print_signals))
660       TARGET_DEFAULT_IGNORE ();
661 
662     /* Documentation of this routine is provided with the
663        corresponding target_* function.  */
664     virtual void program_signals (gdb::array_view<const unsigned char> TARGET_DEBUG_PRINTER (target_debug_print_signals))
665       TARGET_DEFAULT_IGNORE ();
666 
667     virtual bool thread_alive (ptid_t ptid)
668       TARGET_DEFAULT_RETURN (false);
669     virtual void update_thread_list ()
670       TARGET_DEFAULT_IGNORE ();
671     virtual std::string pid_to_str (ptid_t)
672       TARGET_DEFAULT_FUNC (default_pid_to_str);
673     virtual const char *extra_thread_info (thread_info *)
674       TARGET_DEFAULT_RETURN (NULL);
675     virtual const char *thread_name (thread_info *)
676       TARGET_DEFAULT_RETURN (NULL);
677     virtual thread_info *thread_handle_to_thread_info (const gdb_byte *,
678 						       int,
679 						       inferior *inf)
680       TARGET_DEFAULT_RETURN (NULL);
681     /* See target_thread_info_to_thread_handle.  */
682     virtual gdb::byte_vector thread_info_to_thread_handle (struct thread_info *)
683       TARGET_DEFAULT_RETURN (gdb::byte_vector ());
684     virtual void stop (ptid_t)
685       TARGET_DEFAULT_IGNORE ();
686     virtual void interrupt ()
687       TARGET_DEFAULT_IGNORE ();
688     virtual void pass_ctrlc ()
689       TARGET_DEFAULT_FUNC (default_target_pass_ctrlc);
690     virtual void rcmd (const char *command, struct ui_file *output)
691       TARGET_DEFAULT_FUNC (default_rcmd);
692     virtual const char *pid_to_exec_file (int pid)
693       TARGET_DEFAULT_RETURN (NULL);
694     virtual void log_command (const char *)
695       TARGET_DEFAULT_IGNORE ();
696     virtual const target_section_table *get_section_table ()
697       TARGET_DEFAULT_RETURN (default_get_section_table ());
698 
699     /* Provide default values for all "must have" methods.  */
700     virtual bool has_all_memory () { return false; }
701     virtual bool has_memory () { return false; }
702     virtual bool has_stack () { return false; }
703     virtual bool has_registers () { return false; }
704     virtual bool has_execution (inferior *inf) { return false; }
705 
706     /* Control thread execution.  */
707     virtual thread_control_capabilities get_thread_control_capabilities ()
708       TARGET_DEFAULT_RETURN (tc_none);
709     virtual bool attach_no_wait ()
710       TARGET_DEFAULT_RETURN (0);
711     /* This method must be implemented in some situations.  See the
712        comment on 'can_run'.  */
713     virtual bool can_async_p ()
714       TARGET_DEFAULT_RETURN (false);
715     virtual bool is_async_p ()
716       TARGET_DEFAULT_RETURN (false);
717     virtual void async (bool)
718       TARGET_DEFAULT_NORETURN (tcomplain ());
719     virtual int async_wait_fd ()
720       TARGET_DEFAULT_NORETURN (noprocess ());
721     /* Return true if the target has pending events to report to the
722        core.  If true, then GDB avoids resuming the target until all
723        pending events are consumed, so that multiple resumptions can
724        be coalesced as an optimization.  Most targets can't tell
725        whether they have pending events without calling target_wait,
726        so we default to returning false.  The only downside is that a
727        potential optimization is missed.  */
728     virtual bool has_pending_events ()
729       TARGET_DEFAULT_RETURN (false);
730     virtual void thread_events (int)
731       TARGET_DEFAULT_IGNORE ();
732     /* This method must be implemented in some situations.  See the
733        comment on 'can_run'.  */
734     virtual bool supports_non_stop ()
735       TARGET_DEFAULT_RETURN (false);
736     /* Return true if the target operates in non-stop mode even with
737        "set non-stop off".  */
738     virtual bool always_non_stop_p ()
739       TARGET_DEFAULT_RETURN (false);
740     /* find_memory_regions support method for gcore */
741     virtual int find_memory_regions (find_memory_region_ftype func, void *data)
742       TARGET_DEFAULT_FUNC (dummy_find_memory_regions);
743     /* make_corefile_notes support method for gcore */
744     virtual gdb::unique_xmalloc_ptr<char> make_corefile_notes (bfd *, int *)
745       TARGET_DEFAULT_FUNC (dummy_make_corefile_notes);
746     /* get_bookmark support method for bookmarks */
747     virtual gdb_byte *get_bookmark (const char *, int)
748       TARGET_DEFAULT_NORETURN (tcomplain ());
749     /* goto_bookmark support method for bookmarks */
750     virtual void goto_bookmark (const gdb_byte *, int)
751       TARGET_DEFAULT_NORETURN (tcomplain ());
752     /* Return the thread-local address at OFFSET in the
753        thread-local storage for the thread PTID and the shared library
754        or executable file given by LOAD_MODULE_ADDR.  If that block of
755        thread-local storage hasn't been allocated yet, this function
756        may throw an error.  LOAD_MODULE_ADDR may be zero for statically
757        linked multithreaded inferiors.  */
758     virtual CORE_ADDR get_thread_local_address (ptid_t ptid,
759 						CORE_ADDR load_module_addr,
760 						CORE_ADDR offset)
761       TARGET_DEFAULT_NORETURN (generic_tls_error ());
762 
763     /* Request that OPS transfer up to LEN addressable units of the target's
764        OBJECT.  When reading from a memory object, the size of an addressable
765        unit is architecture dependent and can be found using
766        gdbarch_addressable_memory_unit_size.  Otherwise, an addressable unit is
767        1 byte long.  The OFFSET, for a seekable object, specifies the
768        starting point.  The ANNEX can be used to provide additional
769        data-specific information to the target.
770 
771        Return the transferred status, error or OK (an
772        'enum target_xfer_status' value).  Save the number of addressable units
773        actually transferred in *XFERED_LEN if transfer is successful
774        (TARGET_XFER_OK) or the number unavailable units if the requested
775        data is unavailable (TARGET_XFER_UNAVAILABLE).  *XFERED_LEN
776        smaller than LEN does not indicate the end of the object, only
777        the end of the transfer; higher level code should continue
778        transferring if desired.  This is handled in target.c.
779 
780        The interface does not support a "retry" mechanism.  Instead it
781        assumes that at least one addressable unit will be transfered on each
782        successful call.
783 
784        NOTE: cagney/2003-10-17: The current interface can lead to
785        fragmented transfers.  Lower target levels should not implement
786        hacks, such as enlarging the transfer, in an attempt to
787        compensate for this.  Instead, the target stack should be
788        extended so that it implements supply/collect methods and a
789        look-aside object cache.  With that available, the lowest
790        target can safely and freely "push" data up the stack.
791 
792        See target_read and target_write for more information.  One,
793        and only one, of readbuf or writebuf must be non-NULL.  */
794 
795     virtual enum target_xfer_status xfer_partial (enum target_object object,
796 						  const char *annex,
797 						  gdb_byte *readbuf,
798 						  const gdb_byte *writebuf,
799 						  ULONGEST offset, ULONGEST len,
800 						  ULONGEST *xfered_len)
801       TARGET_DEFAULT_RETURN (TARGET_XFER_E_IO);
802 
803     /* Return the limit on the size of any single memory transfer
804        for the target.  */
805 
806     virtual ULONGEST get_memory_xfer_limit ()
807       TARGET_DEFAULT_RETURN (ULONGEST_MAX);
808 
809     /* Returns the memory map for the target.  A return value of NULL
810        means that no memory map is available.  If a memory address
811        does not fall within any returned regions, it's assumed to be
812        RAM.  The returned memory regions should not overlap.
813 
814        The order of regions does not matter; target_memory_map will
815        sort regions by starting address.  For that reason, this
816        function should not be called directly except via
817        target_memory_map.
818 
819        This method should not cache data; if the memory map could
820        change unexpectedly, it should be invalidated, and higher
821        layers will re-fetch it.  */
822     virtual std::vector<mem_region> memory_map ()
823       TARGET_DEFAULT_RETURN (std::vector<mem_region> ());
824 
825     /* Erases the region of flash memory starting at ADDRESS, of
826        length LENGTH.
827 
828        Precondition: both ADDRESS and ADDRESS+LENGTH should be aligned
829        on flash block boundaries, as reported by 'to_memory_map'.  */
830     virtual void flash_erase (ULONGEST address, LONGEST length)
831       TARGET_DEFAULT_NORETURN (tcomplain ());
832 
833     /* Finishes a flash memory write sequence.  After this operation
834        all flash memory should be available for writing and the result
835        of reading from areas written by 'to_flash_write' should be
836        equal to what was written.  */
837     virtual void flash_done ()
838       TARGET_DEFAULT_NORETURN (tcomplain ());
839 
840     /* Describe the architecture-specific features of the current
841        inferior.
842 
843        Returns the description found, or nullptr if no description was
844        available.
845 
846        If some target features differ between threads, the description
847        returned by read_description (and the resulting gdbarch) won't
848        accurately describe all threads.  In this case, the
849        thread_architecture method can be used to obtain gdbarches that
850        accurately describe each thread.  */
851     virtual const struct target_desc *read_description ()
852 	 TARGET_DEFAULT_RETURN (NULL);
853 
854     /* Build the PTID of the thread on which a given task is running,
855        based on LWP and THREAD.  These values are extracted from the
856        task Private_Data section of the Ada Task Control Block, and
857        their interpretation depends on the target.  */
858     virtual ptid_t get_ada_task_ptid (long lwp, ULONGEST thread)
859       TARGET_DEFAULT_FUNC (default_get_ada_task_ptid);
860 
861     /* Read one auxv entry from *READPTR, not reading locations >= ENDPTR.
862        Return 0 if *READPTR is already at the end of the buffer.
863        Return -1 if there is insufficient buffer for a whole entry.
864        Return 1 if an entry was read into *TYPEP and *VALP.  */
865     virtual int auxv_parse (const gdb_byte **readptr,
866 			    const gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
867       TARGET_DEFAULT_FUNC (default_auxv_parse);
868 
869     /* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the
870        sequence of bytes in PATTERN with length PATTERN_LEN.
871 
872        The result is 1 if found, 0 if not found, and -1 if there was an error
873        requiring halting of the search (e.g. memory read error).
874        If the pattern is found the address is recorded in FOUND_ADDRP.  */
875     virtual int search_memory (CORE_ADDR start_addr, ULONGEST search_space_len,
876 			       const gdb_byte *pattern, ULONGEST pattern_len,
877 			       CORE_ADDR *found_addrp)
878       TARGET_DEFAULT_FUNC (default_search_memory);
879 
880     /* Can target execute in reverse?  */
881     virtual bool can_execute_reverse ()
882       TARGET_DEFAULT_RETURN (false);
883 
884     /* The direction the target is currently executing.  Must be
885        implemented on targets that support reverse execution and async
886        mode.  The default simply returns forward execution.  */
887     virtual enum exec_direction_kind execution_direction ()
888       TARGET_DEFAULT_FUNC (default_execution_direction);
889 
890     /* Does this target support debugging multiple processes
891        simultaneously?  */
892     virtual bool supports_multi_process ()
893       TARGET_DEFAULT_RETURN (false);
894 
895     /* Does this target support enabling and disabling tracepoints while a trace
896        experiment is running?  */
897     virtual bool supports_enable_disable_tracepoint ()
898       TARGET_DEFAULT_RETURN (false);
899 
900     /* Does this target support disabling address space randomization?  */
901     virtual bool supports_disable_randomization ()
902       TARGET_DEFAULT_FUNC (find_default_supports_disable_randomization);
903 
904     /* Does this target support the tracenz bytecode for string collection?  */
905     virtual bool supports_string_tracing ()
906       TARGET_DEFAULT_RETURN (false);
907 
908     /* Does this target support evaluation of breakpoint conditions on its
909        end?  */
910     virtual bool supports_evaluation_of_breakpoint_conditions ()
911       TARGET_DEFAULT_RETURN (false);
912 
913     /* Does this target support native dumpcore API?  */
914     virtual bool supports_dumpcore ()
915       TARGET_DEFAULT_RETURN (false);
916 
917     /* Generate the core file with native target API.  */
918     virtual void dumpcore (const char *filename)
919       TARGET_DEFAULT_IGNORE ();
920 
921     /* Does this target support evaluation of breakpoint commands on its
922        end?  */
923     virtual bool can_run_breakpoint_commands ()
924       TARGET_DEFAULT_RETURN (false);
925 
926     /* Determine current architecture of thread PTID.
927 
928        The target is supposed to determine the architecture of the code where
929        the target is currently stopped at.  The architecture information is
930        used to perform decr_pc_after_break adjustment, and also to determine
931        the frame architecture of the innermost frame.  ptrace operations need to
932        operate according to target_gdbarch ().  */
933     virtual struct gdbarch *thread_architecture (ptid_t)
934       TARGET_DEFAULT_RETURN (NULL);
935 
936     /* Determine current address space of thread PTID.  */
937     virtual struct address_space *thread_address_space (ptid_t)
938       TARGET_DEFAULT_RETURN (NULL);
939 
940     /* Target file operations.  */
941 
942     /* Return true if the filesystem seen by the current inferior
943        is the local filesystem, false otherwise.  */
944     virtual bool filesystem_is_local ()
945       TARGET_DEFAULT_RETURN (true);
946 
947     /* Open FILENAME on the target, in the filesystem as seen by INF,
948        using FLAGS and MODE.  If INF is NULL, use the filesystem seen
949        by the debugger (GDB or, for remote targets, the remote stub).
950        If WARN_IF_SLOW is nonzero, print a warning message if the file
951        is being accessed over a link that may be slow.  Return a
952        target file descriptor, or -1 if an error occurs (and set
953        *TARGET_ERRNO).  */
954     virtual int fileio_open (struct inferior *inf, const char *filename,
955 			     int flags, int mode, int warn_if_slow,
956 			     fileio_error *target_errno);
957 
958     /* Write up to LEN bytes from WRITE_BUF to FD on the target.
959        Return the number of bytes written, or -1 if an error occurs
960        (and set *TARGET_ERRNO).  */
961     virtual int fileio_pwrite (int fd, const gdb_byte *write_buf, int len,
962 			       ULONGEST offset, fileio_error *target_errno);
963 
964     /* Read up to LEN bytes FD on the target into READ_BUF.
965        Return the number of bytes read, or -1 if an error occurs
966        (and set *TARGET_ERRNO).  */
967     virtual int fileio_pread (int fd, gdb_byte *read_buf, int len,
968 			      ULONGEST offset, fileio_error *target_errno);
969 
970     /* Get information about the file opened as FD and put it in
971        SB.  Return 0 on success, or -1 if an error occurs (and set
972        *TARGET_ERRNO).  */
973     virtual int fileio_fstat (int fd, struct stat *sb, fileio_error *target_errno);
974 
975     /* Close FD on the target.  Return 0, or -1 if an error occurs
976        (and set *TARGET_ERRNO).  */
977     virtual int fileio_close (int fd, fileio_error *target_errno);
978 
979     /* Unlink FILENAME on the target, in the filesystem as seen by
980        INF.  If INF is NULL, use the filesystem seen by the debugger
981        (GDB or, for remote targets, the remote stub).  Return 0, or
982        -1 if an error occurs (and set *TARGET_ERRNO).  */
983     virtual int fileio_unlink (struct inferior *inf,
984 			       const char *filename,
985 			       fileio_error *target_errno);
986 
987     /* Read value of symbolic link FILENAME on the target, in the
988        filesystem as seen by INF.  If INF is NULL, use the filesystem
989        seen by the debugger (GDB or, for remote targets, the remote
990        stub).  Return a string, or an empty optional if an error
991        occurs (and set *TARGET_ERRNO).  */
992     virtual gdb::optional<std::string> fileio_readlink (struct inferior *inf,
993 							const char *filename,
994 							fileio_error *target_errno);
995 
996     /* Implement the "info proc" command.  Returns true if the target
997        actually implemented the command, false otherwise.  */
998     virtual bool info_proc (const char *, enum info_proc_what);
999 
1000     /* Tracepoint-related operations.  */
1001 
1002     /* Prepare the target for a tracing run.  */
1003     virtual void trace_init ()
1004       TARGET_DEFAULT_NORETURN (tcomplain ());
1005 
1006     /* Send full details of a tracepoint location to the target.  */
1007     virtual void download_tracepoint (struct bp_location *location)
1008       TARGET_DEFAULT_NORETURN (tcomplain ());
1009 
1010     /* Is the target able to download tracepoint locations in current
1011        state?  */
1012     virtual bool can_download_tracepoint ()
1013       TARGET_DEFAULT_RETURN (false);
1014 
1015     /* Send full details of a trace state variable to the target.  */
1016     virtual void download_trace_state_variable (const trace_state_variable &tsv)
1017       TARGET_DEFAULT_NORETURN (tcomplain ());
1018 
1019     /* Enable a tracepoint on the target.  */
1020     virtual void enable_tracepoint (struct bp_location *location)
1021       TARGET_DEFAULT_NORETURN (tcomplain ());
1022 
1023     /* Disable a tracepoint on the target.  */
1024     virtual void disable_tracepoint (struct bp_location *location)
1025       TARGET_DEFAULT_NORETURN (tcomplain ());
1026 
1027     /* Inform the target info of memory regions that are readonly
1028        (such as text sections), and so it should return data from
1029        those rather than look in the trace buffer.  */
1030     virtual void trace_set_readonly_regions ()
1031       TARGET_DEFAULT_NORETURN (tcomplain ());
1032 
1033     /* Start a trace run.  */
1034     virtual void trace_start ()
1035       TARGET_DEFAULT_NORETURN (tcomplain ());
1036 
1037     /* Get the current status of a tracing run.  */
1038     virtual int get_trace_status (struct trace_status *ts)
1039       TARGET_DEFAULT_RETURN (-1);
1040 
1041     virtual void get_tracepoint_status (struct breakpoint *tp,
1042 					struct uploaded_tp *utp)
1043       TARGET_DEFAULT_NORETURN (tcomplain ());
1044 
1045     /* Stop a trace run.  */
1046     virtual void trace_stop ()
1047       TARGET_DEFAULT_NORETURN (tcomplain ());
1048 
1049    /* Ask the target to find a trace frame of the given type TYPE,
1050       using NUM, ADDR1, and ADDR2 as search parameters.  Returns the
1051       number of the trace frame, and also the tracepoint number at
1052       TPP.  If no trace frame matches, return -1.  May throw if the
1053       operation fails.  */
1054     virtual int trace_find (enum trace_find_type type, int num,
1055 			    CORE_ADDR addr1, CORE_ADDR addr2, int *tpp)
1056       TARGET_DEFAULT_RETURN (-1);
1057 
1058     /* Get the value of the trace state variable number TSV, returning
1059        1 if the value is known and writing the value itself into the
1060        location pointed to by VAL, else returning 0.  */
1061     virtual bool get_trace_state_variable_value (int tsv, LONGEST *val)
1062       TARGET_DEFAULT_RETURN (false);
1063 
1064     virtual int save_trace_data (const char *filename)
1065       TARGET_DEFAULT_NORETURN (tcomplain ());
1066 
1067     virtual int upload_tracepoints (struct uploaded_tp **utpp)
1068       TARGET_DEFAULT_RETURN (0);
1069 
1070     virtual int upload_trace_state_variables (struct uploaded_tsv **utsvp)
1071       TARGET_DEFAULT_RETURN (0);
1072 
1073     virtual LONGEST get_raw_trace_data (gdb_byte *buf,
1074 					ULONGEST offset, LONGEST len)
1075       TARGET_DEFAULT_NORETURN (tcomplain ());
1076 
1077     /* Get the minimum length of instruction on which a fast tracepoint
1078        may be set on the target.  If this operation is unsupported,
1079        return -1.  If for some reason the minimum length cannot be
1080        determined, return 0.  */
1081     virtual int get_min_fast_tracepoint_insn_len ()
1082       TARGET_DEFAULT_RETURN (-1);
1083 
1084     /* Set the target's tracing behavior in response to unexpected
1085        disconnection - set VAL to 1 to keep tracing, 0 to stop.  */
1086     virtual void set_disconnected_tracing (int val)
1087       TARGET_DEFAULT_IGNORE ();
1088     virtual void set_circular_trace_buffer (int val)
1089       TARGET_DEFAULT_IGNORE ();
1090     /* Set the size of trace buffer in the target.  */
1091     virtual void set_trace_buffer_size (LONGEST val)
1092       TARGET_DEFAULT_IGNORE ();
1093 
1094     /* Add/change textual notes about the trace run, returning true if
1095        successful, false otherwise.  */
1096     virtual bool set_trace_notes (const char *user, const char *notes,
1097 				  const char *stopnotes)
1098       TARGET_DEFAULT_RETURN (false);
1099 
1100     /* Return the processor core that thread PTID was last seen on.
1101        This information is updated only when:
1102        - update_thread_list is called
1103        - thread stops
1104        If the core cannot be determined -- either for the specified
1105        thread, or right now, or in this debug session, or for this
1106        target -- return -1.  */
1107     virtual int core_of_thread (ptid_t ptid)
1108       TARGET_DEFAULT_RETURN (-1);
1109 
1110     /* Verify that the memory in the [MEMADDR, MEMADDR+SIZE) range
1111        matches the contents of [DATA,DATA+SIZE).  Returns 1 if there's
1112        a match, 0 if there's a mismatch, and -1 if an error is
1113        encountered while reading memory.  */
1114     virtual int verify_memory (const gdb_byte *data,
1115 			       CORE_ADDR memaddr, ULONGEST size)
1116       TARGET_DEFAULT_FUNC (default_verify_memory);
1117 
1118     /* Return the address of the start of the Thread Information Block
1119        a Windows OS specific feature.  */
1120     virtual bool get_tib_address (ptid_t ptid, CORE_ADDR *addr)
1121       TARGET_DEFAULT_NORETURN (tcomplain ());
1122 
1123     /* Send the new settings of write permission variables.  */
1124     virtual void set_permissions ()
1125       TARGET_DEFAULT_IGNORE ();
1126 
1127     /* Look for a static tracepoint marker at ADDR, and fill in MARKER
1128        with its details.  Return true on success, false on failure.  */
1129     virtual bool static_tracepoint_marker_at (CORE_ADDR,
1130 					      static_tracepoint_marker *marker)
1131       TARGET_DEFAULT_RETURN (false);
1132 
1133     /* Return a vector of all tracepoints markers string id ID, or all
1134        markers if ID is NULL.  */
1135     virtual std::vector<static_tracepoint_marker>
1136       static_tracepoint_markers_by_strid (const char *id)
1137       TARGET_DEFAULT_NORETURN (tcomplain ());
1138 
1139     /* Return a traceframe info object describing the current
1140        traceframe's contents.  This method should not cache data;
1141        higher layers take care of caching, invalidating, and
1142        re-fetching when necessary.  */
1143     virtual traceframe_info_up traceframe_info ()
1144       TARGET_DEFAULT_NORETURN (tcomplain ());
1145 
1146     /* Ask the target to use or not to use agent according to USE.
1147        Return true if successful, false otherwise.  */
1148     virtual bool use_agent (bool use)
1149       TARGET_DEFAULT_NORETURN (tcomplain ());
1150 
1151     /* Is the target able to use agent in current state?  */
1152     virtual bool can_use_agent ()
1153       TARGET_DEFAULT_RETURN (false);
1154 
1155     /* Enable branch tracing for TP using CONF configuration.
1156        Return a branch trace target information struct for reading and for
1157        disabling branch trace.  */
1158     virtual struct btrace_target_info *enable_btrace (thread_info *tp,
1159 						      const struct btrace_config *conf)
1160       TARGET_DEFAULT_NORETURN (tcomplain ());
1161 
1162     /* Disable branch tracing and deallocate TINFO.  */
1163     virtual void disable_btrace (struct btrace_target_info *tinfo)
1164       TARGET_DEFAULT_NORETURN (tcomplain ());
1165 
1166     /* Disable branch tracing and deallocate TINFO.  This function is similar
1167        to to_disable_btrace, except that it is called during teardown and is
1168        only allowed to perform actions that are safe.  A counter-example would
1169        be attempting to talk to a remote target.  */
1170     virtual void teardown_btrace (struct btrace_target_info *tinfo)
1171       TARGET_DEFAULT_NORETURN (tcomplain ());
1172 
1173     /* Read branch trace data for the thread indicated by BTINFO into DATA.
1174        DATA is cleared before new trace is added.  */
1175     virtual enum btrace_error read_btrace (struct btrace_data *data,
1176 					   struct btrace_target_info *btinfo,
1177 					   enum btrace_read_type type)
1178       TARGET_DEFAULT_NORETURN (tcomplain ());
1179 
1180     /* Get the branch trace configuration.  */
1181     virtual const struct btrace_config *btrace_conf (const struct btrace_target_info *)
1182       TARGET_DEFAULT_RETURN (NULL);
1183 
1184     /* Current recording method.  */
1185     virtual enum record_method record_method (ptid_t ptid)
1186       TARGET_DEFAULT_RETURN (RECORD_METHOD_NONE);
1187 
1188     /* Stop trace recording.  */
1189     virtual void stop_recording ()
1190       TARGET_DEFAULT_IGNORE ();
1191 
1192     /* Print information about the recording.  */
1193     virtual void info_record ()
1194       TARGET_DEFAULT_IGNORE ();
1195 
1196     /* Save the recorded execution trace into a file.  */
1197     virtual void save_record (const char *filename)
1198       TARGET_DEFAULT_NORETURN (tcomplain ());
1199 
1200     /* Delete the recorded execution trace from the current position
1201        onwards.  */
1202     virtual bool supports_delete_record ()
1203       TARGET_DEFAULT_RETURN (false);
1204     virtual void delete_record ()
1205       TARGET_DEFAULT_NORETURN (tcomplain ());
1206 
1207     /* Query if the record target is currently replaying PTID.  */
1208     virtual bool record_is_replaying (ptid_t ptid)
1209       TARGET_DEFAULT_RETURN (false);
1210 
1211     /* Query if the record target will replay PTID if it were resumed in
1212        execution direction DIR.  */
1213     virtual bool record_will_replay (ptid_t ptid, int dir)
1214       TARGET_DEFAULT_RETURN (false);
1215 
1216     /* Stop replaying.  */
1217     virtual void record_stop_replaying ()
1218       TARGET_DEFAULT_IGNORE ();
1219 
1220     /* Go to the begin of the execution trace.  */
1221     virtual void goto_record_begin ()
1222       TARGET_DEFAULT_NORETURN (tcomplain ());
1223 
1224     /* Go to the end of the execution trace.  */
1225     virtual void goto_record_end ()
1226       TARGET_DEFAULT_NORETURN (tcomplain ());
1227 
1228     /* Go to a specific location in the recorded execution trace.  */
1229     virtual void goto_record (ULONGEST insn)
1230       TARGET_DEFAULT_NORETURN (tcomplain ());
1231 
1232     /* Disassemble SIZE instructions in the recorded execution trace from
1233        the current position.
1234        If SIZE < 0, disassemble abs (SIZE) preceding instructions; otherwise,
1235        disassemble SIZE succeeding instructions.  */
1236     virtual void insn_history (int size, gdb_disassembly_flags flags)
1237       TARGET_DEFAULT_NORETURN (tcomplain ());
1238 
1239     /* Disassemble SIZE instructions in the recorded execution trace around
1240        FROM.
1241        If SIZE < 0, disassemble abs (SIZE) instructions before FROM; otherwise,
1242        disassemble SIZE instructions after FROM.  */
1243     virtual void insn_history_from (ULONGEST from, int size,
1244 				    gdb_disassembly_flags flags)
1245       TARGET_DEFAULT_NORETURN (tcomplain ());
1246 
1247     /* Disassemble a section of the recorded execution trace from instruction
1248        BEGIN (inclusive) to instruction END (inclusive).  */
1249     virtual void insn_history_range (ULONGEST begin, ULONGEST end,
1250 				     gdb_disassembly_flags flags)
1251       TARGET_DEFAULT_NORETURN (tcomplain ());
1252 
1253     /* Print a function trace of the recorded execution trace.
1254        If SIZE < 0, print abs (SIZE) preceding functions; otherwise, print SIZE
1255        succeeding functions.  */
1256     virtual void call_history (int size, record_print_flags flags)
1257       TARGET_DEFAULT_NORETURN (tcomplain ());
1258 
1259     /* Print a function trace of the recorded execution trace starting
1260        at function FROM.
1261        If SIZE < 0, print abs (SIZE) functions before FROM; otherwise, print
1262        SIZE functions after FROM.  */
1263     virtual void call_history_from (ULONGEST begin, int size, record_print_flags flags)
1264       TARGET_DEFAULT_NORETURN (tcomplain ());
1265 
1266     /* Print a function trace of an execution trace section from function BEGIN
1267        (inclusive) to function END (inclusive).  */
1268     virtual void call_history_range (ULONGEST begin, ULONGEST end, record_print_flags flags)
1269       TARGET_DEFAULT_NORETURN (tcomplain ());
1270 
1271     /* True if TARGET_OBJECT_LIBRARIES_SVR4 may be read with a
1272        non-empty annex.  */
1273     virtual bool augmented_libraries_svr4_read ()
1274       TARGET_DEFAULT_RETURN (false);
1275 
1276     /* Those unwinders are tried before any other arch unwinders.  If
1277        SELF doesn't have unwinders, it should delegate to the
1278        "beneath" target.  */
1279     virtual const struct frame_unwind *get_unwinder ()
1280       TARGET_DEFAULT_RETURN (NULL);
1281 
1282     virtual const struct frame_unwind *get_tailcall_unwinder ()
1283       TARGET_DEFAULT_RETURN (NULL);
1284 
1285     /* Prepare to generate a core file.  */
1286     virtual void prepare_to_generate_core ()
1287       TARGET_DEFAULT_IGNORE ();
1288 
1289     /* Cleanup after generating a core file.  */
1290     virtual void done_generating_core ()
1291       TARGET_DEFAULT_IGNORE ();
1292 
1293     /* Returns true if the target supports memory tagging, false otherwise.  */
1294     virtual bool supports_memory_tagging ()
1295       TARGET_DEFAULT_RETURN (false);
1296 
1297     /* Return the allocated memory tags of type TYPE associated with
1298        [ADDRESS, ADDRESS + LEN) in TAGS.
1299 
1300        LEN is the number of bytes in the memory range.  TAGS is a vector of
1301        bytes containing the tags found in the above memory range.
1302 
1303        It is up to the architecture/target to interpret the bytes in the TAGS
1304        vector and read the tags appropriately.
1305 
1306        Returns true if fetching the tags succeeded and false otherwise.  */
1307     virtual bool fetch_memtags (CORE_ADDR address, size_t len,
1308 				gdb::byte_vector &tags, int type)
1309       TARGET_DEFAULT_NORETURN (tcomplain ());
1310 
1311     /* Write the allocation tags of type TYPE contained in TAGS to the memory
1312        range [ADDRESS, ADDRESS + LEN).
1313 
1314        LEN is the number of bytes in the memory range.  TAGS is a vector of
1315        bytes containing the tags to be stored to the memory range.
1316 
1317        It is up to the architecture/target to interpret the bytes in the TAGS
1318        vector and store them appropriately.
1319 
1320        Returns true if storing the tags succeeded and false otherwise.  */
1321     virtual bool store_memtags (CORE_ADDR address, size_t len,
1322 				const gdb::byte_vector &tags, int type)
1323       TARGET_DEFAULT_NORETURN (tcomplain ());
1324   };
1325 
1326 /* Deleter for std::unique_ptr.  See comments in
1327    target_ops::~target_ops and target_ops::close about heap-allocated
1328    targets.  */
1329 struct target_ops_deleter
1330 {
1331   void operator() (target_ops *target)
1332   {
1333     target->close ();
1334   }
1335 };
1336 
1337 /* A unique pointer for target_ops.  */
1338 typedef std::unique_ptr<target_ops, target_ops_deleter> target_ops_up;
1339 
1340 /* A policy class to interface gdb::ref_ptr with target_ops.  */
1341 
1342 struct target_ops_ref_policy
1343 {
1344   static void incref (target_ops *t)
1345   {
1346     t->incref ();
1347   }
1348 
1349   /* Decrement the reference count on T, and, if the reference count
1350      reaches zero, close the target.  */
1351   static void decref (target_ops *t);
1352 };
1353 
1354 /* A gdb::ref_ptr pointer to a target_ops.  */
1355 typedef gdb::ref_ptr<target_ops, target_ops_ref_policy> target_ops_ref;
1356 
1357 /* Native target backends call this once at initialization time to
1358    inform the core about which is the target that can respond to "run"
1359    or "attach".  Note: native targets are always singletons.  */
1360 extern void set_native_target (target_ops *target);
1361 
1362 /* Get the registered native target, if there's one.  Otherwise return
1363    NULL.  */
1364 extern target_ops *get_native_target ();
1365 
1366 /* Type that manages a target stack.  See description of target stacks
1367    and strata at the top of the file.  */
1368 
1369 class target_stack
1370 {
1371 public:
1372   target_stack () = default;
1373   DISABLE_COPY_AND_ASSIGN (target_stack);
1374 
1375   /* Push a new target into the stack of the existing target
1376      accessors, possibly superseding some existing accessor.  */
1377   void push (target_ops *t);
1378 
1379   /* Remove a target from the stack, wherever it may be.  Return true
1380      if it was removed, false otherwise.  */
1381   bool unpush (target_ops *t);
1382 
1383   /* Returns true if T is pushed on the target stack.  */
1384   bool is_pushed (const target_ops *t) const
1385   { return at (t->stratum ()) == t; }
1386 
1387   /* Return the target at STRATUM.  */
1388   target_ops *at (strata stratum) const { return m_stack[stratum].get (); }
1389 
1390   /* Return the target at the top of the stack.  */
1391   target_ops *top () const { return at (m_top); }
1392 
1393   /* Find the next target down the stack from the specified target.  */
1394   target_ops *find_beneath (const target_ops *t) const;
1395 
1396 private:
1397   /* The stratum of the top target.  */
1398   enum strata m_top {};
1399 
1400   /* The stack, represented as an array, with one slot per stratum.
1401      If no target is pushed at some stratum, the corresponding slot is
1402      null.  */
1403   std::array<target_ops_ref, (int) debug_stratum + 1> m_stack;
1404 };
1405 
1406 /* Return the dummy target.  */
1407 extern target_ops *get_dummy_target ();
1408 
1409 /* Define easy words for doing these operations on our current target.  */
1410 
1411 extern const char *target_shortname ();
1412 
1413 /* Does whatever cleanup is required for a target that we are no
1414    longer going to be calling.  This routine is automatically always
1415    called after popping the target off the target stack - the target's
1416    own methods are no longer available through the target vector.
1417    Closing file descriptors and freeing all memory allocated memory are
1418    typical things it should do.  */
1419 
1420 void target_close (struct target_ops *targ);
1421 
1422 /* Find the correct target to use for "attach".  If a target on the
1423    current stack supports attaching, then it is returned.  Otherwise,
1424    the default run target is returned.  */
1425 
1426 extern struct target_ops *find_attach_target (void);
1427 
1428 /* Find the correct target to use for "run".  If a target on the
1429    current stack supports creating a new inferior, then it is
1430    returned.  Otherwise, the default run target is returned.  */
1431 
1432 extern struct target_ops *find_run_target (void);
1433 
1434 /* Some targets don't generate traps when attaching to the inferior,
1435    or their target_attach implementation takes care of the waiting.
1436    These targets must set to_attach_no_wait.  */
1437 
1438 extern bool target_attach_no_wait ();
1439 
1440 /* The target_attach operation places a process under debugger control,
1441    and stops the process.
1442 
1443    This operation provides a target-specific hook that allows the
1444    necessary bookkeeping to be performed after an attach completes.  */
1445 
1446 extern void target_post_attach (int pid);
1447 
1448 /* Display a message indicating we're about to attach to a given
1449    process.  */
1450 
1451 extern void target_announce_attach (int from_tty, int pid);
1452 
1453 /* Display a message indicating we're about to detach from the current
1454    inferior process.  */
1455 
1456 extern void target_announce_detach (int from_tty);
1457 
1458 /* Takes a program previously attached to and detaches it.
1459    The program may resume execution (some targets do, some don't) and will
1460    no longer stop on signals, etc.  We better not have left any breakpoints
1461    in the program or it'll die when it hits one.  FROM_TTY says whether to be
1462    verbose or not.  */
1463 
1464 extern void target_detach (inferior *inf, int from_tty);
1465 
1466 /* Disconnect from the current target without resuming it (leaving it
1467    waiting for a debugger).  */
1468 
1469 extern void target_disconnect (const char *, int);
1470 
1471 /* Resume execution (or prepare for execution) of the current thread
1472    (INFERIOR_PTID), while optionally letting other threads of the
1473    current process or all processes run free.
1474 
1475    STEP says whether to hardware single-step the current thread or to
1476    let it run free; SIGNAL is the signal to be given to the current
1477    thread, or GDB_SIGNAL_0 for no signal.  The caller may not pass
1478    GDB_SIGNAL_DEFAULT.
1479 
1480    SCOPE_PTID indicates the resumption scope.  I.e., which threads
1481    (other than the current) run free.  If resuming a single thread,
1482    SCOPE_PTID is the same thread as the current thread.  A wildcard
1483    SCOPE_PTID (all threads, or all threads of process) lets threads
1484    other than the current (for which the wildcard SCOPE_PTID matches)
1485    resume with their 'thread->suspend.stop_signal' signal (usually
1486    GDB_SIGNAL_0) if it is in "pass" state, or with no signal if in "no
1487    pass" state.  Note neither STEP nor SIGNAL apply to any thread
1488    other than the current.
1489 
1490    In order to efficiently handle batches of resumption requests,
1491    targets may implement this method such that it records the
1492    resumption request, but defers the actual resumption to the
1493    target_commit_resume method implementation.  See
1494    target_commit_resume below.  */
1495 extern void target_resume (ptid_t scope_ptid,
1496 			   int step, enum gdb_signal signal);
1497 
1498 /* Ensure that all resumed threads are committed to the target.
1499 
1500    See the description of process_stratum_target::commit_resumed_state
1501    for more details.  */
1502 extern void target_commit_resumed ();
1503 
1504 /* For target_read_memory see target/target.h.  */
1505 
1506 /* The default target_ops::to_wait implementation.  */
1507 
1508 extern ptid_t default_target_wait (struct target_ops *ops,
1509 				   ptid_t ptid,
1510 				   struct target_waitstatus *status,
1511 				   target_wait_flags options);
1512 
1513 /* Return true if the target has pending events to report to the core.
1514    See target_ops::has_pending_events().  */
1515 
1516 extern bool target_has_pending_events ();
1517 
1518 /* Fetch at least register REGNO, or all regs if regno == -1.  No result.  */
1519 
1520 extern void target_fetch_registers (struct regcache *regcache, int regno);
1521 
1522 /* Store at least register REGNO, or all regs if REGNO == -1.
1523    It can store as many registers as it wants to, so target_prepare_to_store
1524    must have been previously called.  Calls error() if there are problems.  */
1525 
1526 extern void target_store_registers (struct regcache *regcache, int regs);
1527 
1528 /* Get ready to modify the registers array.  On machines which store
1529    individual registers, this doesn't need to do anything.  On machines
1530    which store all the registers in one fell swoop, this makes sure
1531    that REGISTERS contains all the registers from the program being
1532    debugged.  */
1533 
1534 extern void target_prepare_to_store (regcache *regcache);
1535 
1536 /* Determine current address space of thread PTID.  */
1537 
1538 struct address_space *target_thread_address_space (ptid_t);
1539 
1540 /* Implement the "info proc" command.  This returns one if the request
1541    was handled, and zero otherwise.  It can also throw an exception if
1542    an error was encountered while attempting to handle the
1543    request.  */
1544 
1545 int target_info_proc (const char *, enum info_proc_what);
1546 
1547 /* Returns true if this target can disable address space randomization.  */
1548 
1549 int target_supports_disable_randomization (void);
1550 
1551 /* Returns true if this target can enable and disable tracepoints
1552    while a trace experiment is running.  */
1553 
1554 extern bool target_supports_enable_disable_tracepoint ();
1555 
1556 extern bool target_supports_string_tracing ();
1557 
1558 /* Returns true if this target can handle breakpoint conditions
1559    on its end.  */
1560 
1561 extern bool target_supports_evaluation_of_breakpoint_conditions ();
1562 
1563 /* Does this target support dumpcore API?  */
1564 
1565 extern bool target_supports_dumpcore ();
1566 
1567 /* Generate the core file with target API.  */
1568 
1569 extern void target_dumpcore (const char *filename);
1570 
1571 /* Returns true if this target can handle breakpoint commands
1572    on its end.  */
1573 
1574 extern bool target_can_run_breakpoint_commands ();
1575 
1576 /* For target_read_memory see target/target.h.  */
1577 
1578 extern int target_read_raw_memory (CORE_ADDR memaddr, gdb_byte *myaddr,
1579 				   ssize_t len);
1580 
1581 extern int target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len);
1582 
1583 extern int target_read_code (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len);
1584 
1585 /* For target_write_memory see target/target.h.  */
1586 
1587 extern int target_write_raw_memory (CORE_ADDR memaddr, const gdb_byte *myaddr,
1588 				    ssize_t len);
1589 
1590 /* Fetches the target's memory map.  If one is found it is sorted
1591    and returned, after some consistency checking.  Otherwise, NULL
1592    is returned.  */
1593 std::vector<mem_region> target_memory_map (void);
1594 
1595 /* Erases all flash memory regions on the target.  */
1596 void flash_erase_command (const char *cmd, int from_tty);
1597 
1598 /* Erase the specified flash region.  */
1599 void target_flash_erase (ULONGEST address, LONGEST length);
1600 
1601 /* Finish a sequence of flash operations.  */
1602 void target_flash_done (void);
1603 
1604 /* Describes a request for a memory write operation.  */
1605 struct memory_write_request
1606 {
1607   memory_write_request (ULONGEST begin_, ULONGEST end_,
1608 			gdb_byte *data_ = nullptr, void *baton_ = nullptr)
1609     : begin (begin_), end (end_), data (data_), baton (baton_)
1610   {}
1611 
1612   /* Begining address that must be written.  */
1613   ULONGEST begin;
1614   /* Past-the-end address.  */
1615   ULONGEST end;
1616   /* The data to write.  */
1617   gdb_byte *data;
1618   /* A callback baton for progress reporting for this request.  */
1619   void *baton;
1620 };
1621 
1622 /* Enumeration specifying different flash preservation behaviour.  */
1623 enum flash_preserve_mode
1624   {
1625     flash_preserve,
1626     flash_discard
1627   };
1628 
1629 /* Write several memory blocks at once.  This version can be more
1630    efficient than making several calls to target_write_memory, in
1631    particular because it can optimize accesses to flash memory.
1632 
1633    Moreover, this is currently the only memory access function in gdb
1634    that supports writing to flash memory, and it should be used for
1635    all cases where access to flash memory is desirable.
1636 
1637    REQUESTS is the vector of memory_write_request.
1638    PRESERVE_FLASH_P indicates what to do with blocks which must be
1639      erased, but not completely rewritten.
1640    PROGRESS_CB is a function that will be periodically called to provide
1641      feedback to user.  It will be called with the baton corresponding
1642      to the request currently being written.  It may also be called
1643      with a NULL baton, when preserved flash sectors are being rewritten.
1644 
1645    The function returns 0 on success, and error otherwise.  */
1646 int target_write_memory_blocks
1647     (const std::vector<memory_write_request> &requests,
1648      enum flash_preserve_mode preserve_flash_p,
1649      void (*progress_cb) (ULONGEST, void *));
1650 
1651 /* Print a line about the current target.  */
1652 
1653 extern void target_files_info ();
1654 
1655 /* Insert a breakpoint at address BP_TGT->placed_address in
1656    the target machine.  Returns 0 for success, and returns non-zero or
1657    throws an error (with a detailed failure reason error code and
1658    message) otherwise.  */
1659 
1660 extern int target_insert_breakpoint (struct gdbarch *gdbarch,
1661 				     struct bp_target_info *bp_tgt);
1662 
1663 /* Remove a breakpoint at address BP_TGT->placed_address in the target
1664    machine.  Result is 0 for success, non-zero for error.  */
1665 
1666 extern int target_remove_breakpoint (struct gdbarch *gdbarch,
1667 				     struct bp_target_info *bp_tgt,
1668 				     enum remove_bp_reason reason);
1669 
1670 /* Return true if the target stack has a non-default
1671   "terminal_ours" method.  */
1672 
1673 extern bool target_supports_terminal_ours (void);
1674 
1675 /* Kill the inferior process.   Make it go away.  */
1676 
1677 extern void target_kill (void);
1678 
1679 /* Load an executable file into the target process.  This is expected
1680    to not only bring new code into the target process, but also to
1681    update GDB's symbol tables to match.
1682 
1683    ARG contains command-line arguments, to be broken down with
1684    buildargv ().  The first non-switch argument is the filename to
1685    load, FILE; the second is a number (as parsed by strtoul (..., ...,
1686    0)), which is an offset to apply to the load addresses of FILE's
1687    sections.  The target may define switches, or other non-switch
1688    arguments, as it pleases.  */
1689 
1690 extern void target_load (const char *arg, int from_tty);
1691 
1692 /* On some targets, we can catch an inferior fork or vfork event when
1693    it occurs.  These functions insert/remove an already-created
1694    catchpoint for such events.  They return  0 for success, 1 if the
1695    catchpoint type is not supported and -1 for failure.  */
1696 
1697 extern int target_insert_fork_catchpoint (int pid);
1698 
1699 extern int target_remove_fork_catchpoint (int pid);
1700 
1701 extern int target_insert_vfork_catchpoint (int pid);
1702 
1703 extern int target_remove_vfork_catchpoint (int pid);
1704 
1705 /* Call the follow_fork method on the current target stack.
1706 
1707    This function is called when the inferior forks or vforks, to perform any
1708    bookkeeping and fiddling necessary to continue debugging either the parent,
1709    the child or both.  */
1710 
1711 void target_follow_fork (inferior *inf, ptid_t child_ptid,
1712 			 target_waitkind fork_kind, bool follow_child,
1713 			 bool detach_fork);
1714 
1715 /* Handle the target-specific bookkeeping required when the inferior makes an
1716    exec call.
1717 
1718    The current inferior at the time of the call is the inferior that did the
1719    exec.  FOLLOW_INF is the inferior in which execution continues post-exec.
1720    If "follow-exec-mode" is "same", FOLLOW_INF is the same as the current
1721    inferior, meaning that execution continues with the same inferior.  If
1722    "follow-exec-mode" is "new", FOLLOW_INF is a different inferior, meaning
1723    that execution continues in a new inferior.
1724 
1725    On exit, the target must leave FOLLOW_INF as the current inferior.  */
1726 
1727 void target_follow_exec (inferior *follow_inf, ptid_t ptid,
1728 			 const char *execd_pathname);
1729 
1730 /* On some targets, we can catch an inferior exec event when it
1731    occurs.  These functions insert/remove an already-created
1732    catchpoint for such events.  They return  0 for success, 1 if the
1733    catchpoint type is not supported and -1 for failure.  */
1734 
1735 extern int target_insert_exec_catchpoint (int pid);
1736 
1737 extern int target_remove_exec_catchpoint (int pid);
1738 
1739 /* Syscall catch.
1740 
1741    NEEDED is true if any syscall catch (of any kind) is requested.
1742    If NEEDED is false, it means the target can disable the mechanism to
1743    catch system calls because there are no more catchpoints of this type.
1744 
1745    ANY_COUNT is nonzero if a generic (filter-less) syscall catch is
1746    being requested.  In this case, SYSCALL_COUNTS should be ignored.
1747 
1748    SYSCALL_COUNTS is an array of ints, indexed by syscall number.  An
1749    element in this array is nonzero if that syscall should be caught.
1750    This argument only matters if ANY_COUNT is zero.
1751 
1752    Return 0 for success, 1 if syscall catchpoints are not supported or -1
1753    for failure.  */
1754 
1755 extern int target_set_syscall_catchpoint
1756   (int pid, bool needed, int any_count,
1757    gdb::array_view<const int> syscall_counts);
1758 
1759 /* The debugger has completed a blocking wait() call.  There is now
1760    some process event that must be processed.  This function should
1761    be defined by those targets that require the debugger to perform
1762    cleanup or internal state changes in response to the process event.  */
1763 
1764 /* For target_mourn_inferior see target/target.h.  */
1765 
1766 /* Does target have enough data to do a run or attach command?  */
1767 
1768 extern int target_can_run ();
1769 
1770 /* Set list of signals to be handled in the target.
1771 
1772    PASS_SIGNALS is an array indexed by target signal number
1773    (enum gdb_signal).  For every signal whose entry in this array is
1774    non-zero, the target is allowed -but not required- to skip reporting
1775    arrival of the signal to the GDB core by returning from target_wait,
1776    and to pass the signal directly to the inferior instead.
1777 
1778    However, if the target is hardware single-stepping a thread that is
1779    about to receive a signal, it needs to be reported in any case, even
1780    if mentioned in a previous target_pass_signals call.   */
1781 
1782 extern void target_pass_signals
1783   (gdb::array_view<const unsigned char> pass_signals);
1784 
1785 /* Set list of signals the target may pass to the inferior.  This
1786    directly maps to the "handle SIGNAL pass/nopass" setting.
1787 
1788    PROGRAM_SIGNALS is an array indexed by target signal
1789    number (enum gdb_signal).  For every signal whose entry in this
1790    array is non-zero, the target is allowed to pass the signal to the
1791    inferior.  Signals not present in the array shall be silently
1792    discarded.  This does not influence whether to pass signals to the
1793    inferior as a result of a target_resume call.  This is useful in
1794    scenarios where the target needs to decide whether to pass or not a
1795    signal to the inferior without GDB core involvement, such as for
1796    example, when detaching (as threads may have been suspended with
1797    pending signals not reported to GDB).  */
1798 
1799 extern void target_program_signals
1800   (gdb::array_view<const unsigned char> program_signals);
1801 
1802 /* Check to see if a thread is still alive.  */
1803 
1804 extern int target_thread_alive (ptid_t ptid);
1805 
1806 /* Sync the target's threads with GDB's thread list.  */
1807 
1808 extern void target_update_thread_list (void);
1809 
1810 /* Make target stop in a continuable fashion.  (For instance, under
1811    Unix, this should act like SIGSTOP).  Note that this function is
1812    asynchronous: it does not wait for the target to become stopped
1813    before returning.  If this is the behavior you want please use
1814    target_stop_and_wait.  */
1815 
1816 extern void target_stop (ptid_t ptid);
1817 
1818 /* Interrupt the target.  Unlike target_stop, this does not specify
1819    which thread/process reports the stop.  For most target this acts
1820    like raising a SIGINT, though that's not absolutely required.  This
1821    function is asynchronous.  */
1822 
1823 extern void target_interrupt ();
1824 
1825 /* Pass a ^C, as determined to have been pressed by checking the quit
1826    flag, to the target, as if the user had typed the ^C on the
1827    inferior's controlling terminal while the inferior was in the
1828    foreground.  Remote targets may take the opportunity to detect the
1829    remote side is not responding and offer to disconnect.  */
1830 
1831 extern void target_pass_ctrlc (void);
1832 
1833 /* The default target_ops::to_pass_ctrlc implementation.  Simply calls
1834    target_interrupt.  */
1835 extern void default_target_pass_ctrlc (struct target_ops *ops);
1836 
1837 /* Send the specified COMMAND to the target's monitor
1838    (shell,interpreter) for execution.  The result of the query is
1839    placed in OUTBUF.  */
1840 
1841 extern void target_rcmd (const char *command, struct ui_file *outbuf);
1842 
1843 /* Does the target include memory?  (Dummy targets don't.)  */
1844 
1845 extern int target_has_memory ();
1846 
1847 /* Does the target have a stack?  (Exec files don't, VxWorks doesn't, until
1848    we start a process.)  */
1849 
1850 extern int target_has_stack ();
1851 
1852 /* Does the target have registers?  (Exec files don't.)  */
1853 
1854 extern int target_has_registers ();
1855 
1856 /* Does the target have execution?  Can we make it jump (through
1857    hoops), or pop its stack a few times?  This means that the current
1858    target is currently executing; for some targets, that's the same as
1859    whether or not the target is capable of execution, but there are
1860    also targets which can be current while not executing.  In that
1861    case this will become true after to_create_inferior or
1862    to_attach.  INF is the inferior to use; nullptr means to use the
1863    current inferior.  */
1864 
1865 extern bool target_has_execution (inferior *inf = nullptr);
1866 
1867 /* Can the target support the debugger control of thread execution?
1868    Can it lock the thread scheduler?  */
1869 
1870 extern bool target_can_lock_scheduler ();
1871 
1872 /* Controls whether async mode is permitted.  */
1873 extern bool target_async_permitted;
1874 
1875 /* Can the target support asynchronous execution?  */
1876 extern bool target_can_async_p ();
1877 
1878 /* An overload of the above that can be called when the target is not yet
1879    pushed, this calls TARGET::can_async_p directly.  */
1880 extern bool target_can_async_p (struct target_ops *target);
1881 
1882 /* Is the target in asynchronous execution mode?  */
1883 extern bool target_is_async_p ();
1884 
1885 /* Enables/disabled async target events.  */
1886 extern void target_async (bool enable);
1887 
1888 /* Enables/disables thread create and exit events.  */
1889 extern void target_thread_events (int enable);
1890 
1891 /* Whether support for controlling the target backends always in
1892    non-stop mode is enabled.  */
1893 extern enum auto_boolean target_non_stop_enabled;
1894 
1895 /* Is the target in non-stop mode?  Some targets control the inferior
1896    in non-stop mode even with "set non-stop off".  Always true if "set
1897    non-stop" is on.  */
1898 extern bool target_is_non_stop_p ();
1899 
1900 /* Return true if at least one inferior has a non-stop target.  */
1901 extern bool exists_non_stop_target ();
1902 
1903 extern exec_direction_kind target_execution_direction ();
1904 
1905 /* Converts a process id to a string.  Usually, the string just contains
1906    `process xyz', but on some systems it may contain
1907    `process xyz thread abc'.  */
1908 
1909 extern std::string target_pid_to_str (ptid_t ptid);
1910 
1911 extern std::string normal_pid_to_str (ptid_t ptid);
1912 
1913 /* Return a short string describing extra information about PID,
1914    e.g. "sleeping", "runnable", "running on LWP 3".  Null return value
1915    is okay.  */
1916 
1917 extern const char *target_extra_thread_info (thread_info *tp);
1918 
1919 /* Return the thread's name, or NULL if the target is unable to determine it.
1920    The returned value must not be freed by the caller.
1921 
1922    You likely don't want to call this function, but use the thread_name
1923    function instead, which prefers the user-given thread name, if set.  */
1924 
1925 extern const char *target_thread_name (struct thread_info *);
1926 
1927 /* Given a pointer to a thread library specific thread handle and
1928    its length, return a pointer to the corresponding thread_info struct.  */
1929 
1930 extern struct thread_info *target_thread_handle_to_thread_info
1931   (const gdb_byte *thread_handle, int handle_len, struct inferior *inf);
1932 
1933 /* Given a thread, return the thread handle, a target-specific sequence of
1934    bytes which serves as a thread identifier within the program being
1935    debugged.  */
1936 extern gdb::byte_vector target_thread_info_to_thread_handle
1937   (struct thread_info *);
1938 
1939 /* Attempts to find the pathname of the executable file
1940    that was run to create a specified process.
1941 
1942    The process PID must be stopped when this operation is used.
1943 
1944    If the executable file cannot be determined, NULL is returned.
1945 
1946    Else, a pointer to a character string containing the pathname
1947    is returned.  This string should be copied into a buffer by
1948    the client if the string will not be immediately used, or if
1949    it must persist.  */
1950 
1951 extern const char *target_pid_to_exec_file (int pid);
1952 
1953 /* See the to_thread_architecture description in struct target_ops.  */
1954 
1955 extern gdbarch *target_thread_architecture (ptid_t ptid);
1956 
1957 /*
1958  * Iterator function for target memory regions.
1959  * Calls a callback function once for each memory region 'mapped'
1960  * in the child process.  Defined as a simple macro rather than
1961  * as a function macro so that it can be tested for nullity.
1962  */
1963 
1964 extern int target_find_memory_regions (find_memory_region_ftype func,
1965 				       void *data);
1966 
1967 /*
1968  * Compose corefile .note section.
1969  */
1970 
1971 extern gdb::unique_xmalloc_ptr<char> target_make_corefile_notes (bfd *bfd,
1972 								 int *size_p);
1973 
1974 /* Bookmark interfaces.  */
1975 extern gdb_byte *target_get_bookmark (const char *args, int from_tty);
1976 
1977 extern void target_goto_bookmark (const gdb_byte *arg, int from_tty);
1978 
1979 /* Hardware watchpoint interfaces.  */
1980 
1981 /* GDB's current model is that there are three "kinds" of watchpoints,
1982    with respect to when they trigger and how you can move past them.
1983 
1984    Those are: continuable, steppable, and non-steppable.
1985 
1986    Continuable watchpoints are like x86's -- those trigger after the
1987    memory access's side effects are fully committed to memory.  I.e.,
1988    they trap with the PC pointing at the next instruction already.
1989    Continuing past such a watchpoint is doable by just normally
1990    continuing, hence the name.
1991 
1992    Both steppable and non-steppable watchpoints trap before the memory
1993    access.  I.e, the PC points at the instruction that is accessing
1994    the memory.  So GDB needs to single-step once past the current
1995    instruction in order to make the access effective and check whether
1996    the instruction's side effects change the watched expression.
1997 
1998    Now, in order to step past that instruction, depending on
1999    architecture and target, you can have two situations:
2000 
2001    - steppable watchpoints: you can single-step with the watchpoint
2002      still armed, and the watchpoint won't trigger again.
2003 
2004    - non-steppable watchpoints: if you try to single-step with the
2005      watchpoint still armed, you'd trap the watchpoint again and the
2006      thread wouldn't make any progress.  So GDB needs to temporarily
2007      remove the watchpoint in order to step past it.
2008 
2009    If your target/architecture does not signal that it has either
2010    steppable or non-steppable watchpoints via either
2011    target_have_steppable_watchpoint or
2012    gdbarch_have_nonsteppable_watchpoint, GDB assumes continuable
2013    watchpoints.  */
2014 
2015 /* Returns true if we were stopped by a hardware watchpoint (memory read or
2016    write).  Only the INFERIOR_PTID task is being queried.  */
2017 
2018 extern bool target_stopped_by_watchpoint ();
2019 
2020 /* Returns true if the target stopped because it executed a
2021    software breakpoint instruction.  */
2022 
2023 extern bool target_stopped_by_sw_breakpoint ();
2024 
2025 extern bool target_supports_stopped_by_sw_breakpoint ();
2026 
2027 extern bool target_stopped_by_hw_breakpoint ();
2028 
2029 extern bool target_supports_stopped_by_hw_breakpoint ();
2030 
2031 /* True if we have steppable watchpoints  */
2032 
2033 extern bool target_have_steppable_watchpoint ();
2034 
2035 /* Provide defaults for hardware watchpoint functions.  */
2036 
2037 /* If the *_hw_beakpoint functions have not been defined
2038    elsewhere use the definitions in the target vector.  */
2039 
2040 /* Returns positive if we can set a hardware watchpoint of type TYPE.
2041    Returns negative if the target doesn't have enough hardware debug
2042    registers available.  Return zero if hardware watchpoint of type
2043    TYPE isn't supported.  TYPE is one of bp_hardware_watchpoint,
2044    bp_read_watchpoint, bp_write_watchpoint, or bp_hardware_breakpoint.
2045    CNT is the number of such watchpoints used so far, including this
2046    one.  OTHERTYPE is the number of watchpoints of other types than
2047    this one used so far.  */
2048 
2049 extern int target_can_use_hardware_watchpoint (bptype type, int cnt,
2050 					       int othertype);
2051 
2052 /* Returns the number of debug registers needed to watch the given
2053    memory region, or zero if not supported.  */
2054 
2055 extern int target_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len);
2056 
2057 extern int target_can_do_single_step ();
2058 
2059 /* Set/clear a hardware watchpoint starting at ADDR, for LEN bytes.
2060    TYPE is 0 for write, 1 for read, and 2 for read/write accesses.
2061    COND is the expression for its condition, or NULL if there's none.
2062    Returns 0 for success, 1 if the watchpoint type is not supported,
2063    -1 for failure.  */
2064 
2065 extern int target_insert_watchpoint (CORE_ADDR addr, int len,
2066 				     target_hw_bp_type type, expression *cond);
2067 
2068 extern int target_remove_watchpoint (CORE_ADDR addr, int len,
2069 				     target_hw_bp_type type, expression *cond);
2070 
2071 /* Insert a new masked watchpoint at ADDR using the mask MASK.
2072    RW may be hw_read for a read watchpoint, hw_write for a write watchpoint
2073    or hw_access for an access watchpoint.  Returns 0 for success, 1 if
2074    masked watchpoints are not supported, -1 for failure.  */
2075 
2076 extern int target_insert_mask_watchpoint (CORE_ADDR, CORE_ADDR,
2077 					  enum target_hw_bp_type);
2078 
2079 /* Remove a masked watchpoint at ADDR with the mask MASK.
2080    RW may be hw_read for a read watchpoint, hw_write for a write watchpoint
2081    or hw_access for an access watchpoint.  Returns 0 for success, non-zero
2082    for failure.  */
2083 
2084 extern int target_remove_mask_watchpoint (CORE_ADDR, CORE_ADDR,
2085 					  enum target_hw_bp_type);
2086 
2087 /* Insert a hardware breakpoint at address BP_TGT->placed_address in
2088    the target machine.  Returns 0 for success, and returns non-zero or
2089    throws an error (with a detailed failure reason error code and
2090    message) otherwise.  */
2091 
2092 extern int target_insert_hw_breakpoint (gdbarch *gdbarch,
2093 					bp_target_info *bp_tgt);
2094 
2095 extern int target_remove_hw_breakpoint (gdbarch *gdbarch,
2096 					bp_target_info *bp_tgt);
2097 
2098 /* Return number of debug registers needed for a ranged breakpoint,
2099    or -1 if ranged breakpoints are not supported.  */
2100 
2101 extern int target_ranged_break_num_registers (void);
2102 
2103 /* Return non-zero if target knows the data address which triggered this
2104    target_stopped_by_watchpoint, in such case place it to *ADDR_P.  Only the
2105    INFERIOR_PTID task is being queried.  */
2106 #define target_stopped_data_address(target, addr_p) \
2107   (target)->stopped_data_address (addr_p)
2108 
2109 /* Return non-zero if ADDR is within the range of a watchpoint spanning
2110    LENGTH bytes beginning at START.  */
2111 #define target_watchpoint_addr_within_range(target, addr, start, length) \
2112   (target)->watchpoint_addr_within_range (addr, start, length)
2113 
2114 /* Return non-zero if the target is capable of using hardware to evaluate
2115    the condition expression.  In this case, if the condition is false when
2116    the watched memory location changes, execution may continue without the
2117    debugger being notified.
2118 
2119    Due to limitations in the hardware implementation, it may be capable of
2120    avoiding triggering the watchpoint in some cases where the condition
2121    expression is false, but may report some false positives as well.
2122    For this reason, GDB will still evaluate the condition expression when
2123    the watchpoint triggers.  */
2124 
2125 extern bool target_can_accel_watchpoint_condition (CORE_ADDR addr, int len,
2126 						   int type, expression *cond);
2127 
2128 /* Return number of debug registers needed for a masked watchpoint,
2129    -1 if masked watchpoints are not supported or -2 if the given address
2130    and mask combination cannot be used.  */
2131 
2132 extern int target_masked_watch_num_registers (CORE_ADDR addr, CORE_ADDR mask);
2133 
2134 /* Target can execute in reverse?  */
2135 
2136 extern bool target_can_execute_reverse ();
2137 
2138 extern const struct target_desc *target_read_description (struct target_ops *);
2139 
2140 extern ptid_t target_get_ada_task_ptid (long lwp, ULONGEST tid);
2141 
2142 /* Main entry point for searching memory.  */
2143 extern int target_search_memory (CORE_ADDR start_addr,
2144 				 ULONGEST search_space_len,
2145 				 const gdb_byte *pattern,
2146 				 ULONGEST pattern_len,
2147 				 CORE_ADDR *found_addrp);
2148 
2149 /* Target file operations.  */
2150 
2151 /* Return true if the filesystem seen by the current inferior
2152    is the local filesystem, zero otherwise.  */
2153 
2154 extern bool target_filesystem_is_local ();
2155 
2156 /* Open FILENAME on the target, in the filesystem as seen by INF,
2157    using FLAGS and MODE.  If INF is NULL, use the filesystem seen by
2158    the debugger (GDB or, for remote targets, the remote stub).  Return
2159    a target file descriptor, or -1 if an error occurs (and set
2160    *TARGET_ERRNO).  If WARN_IF_SLOW is true, print a warning message
2161    if the file is being accessed over a link that may be slow.  */
2162 extern int target_fileio_open (struct inferior *inf,
2163 			       const char *filename, int flags,
2164 			       int mode, bool warn_if_slow,
2165 			       fileio_error *target_errno);
2166 
2167 /* Write up to LEN bytes from WRITE_BUF to FD on the target.
2168    Return the number of bytes written, or -1 if an error occurs
2169    (and set *TARGET_ERRNO).  */
2170 extern int target_fileio_pwrite (int fd, const gdb_byte *write_buf, int len,
2171 				 ULONGEST offset, fileio_error *target_errno);
2172 
2173 /* Read up to LEN bytes FD on the target into READ_BUF.
2174    Return the number of bytes read, or -1 if an error occurs
2175    (and set *TARGET_ERRNO).  */
2176 extern int target_fileio_pread (int fd, gdb_byte *read_buf, int len,
2177 				ULONGEST offset, fileio_error *target_errno);
2178 
2179 /* Get information about the file opened as FD on the target
2180    and put it in SB.  Return 0 on success, or -1 if an error
2181    occurs (and set *TARGET_ERRNO).  */
2182 extern int target_fileio_fstat (int fd, struct stat *sb,
2183 				fileio_error *target_errno);
2184 
2185 /* Close FD on the target.  Return 0, or -1 if an error occurs
2186    (and set *TARGET_ERRNO).  */
2187 extern int target_fileio_close (int fd, fileio_error *target_errno);
2188 
2189 /* Unlink FILENAME on the target, in the filesystem as seen by INF.
2190    If INF is NULL, use the filesystem seen by the debugger (GDB or,
2191    for remote targets, the remote stub).  Return 0, or -1 if an error
2192    occurs (and set *TARGET_ERRNO).  */
2193 extern int target_fileio_unlink (struct inferior *inf,
2194 				 const char *filename,
2195 				 fileio_error *target_errno);
2196 
2197 /* Read value of symbolic link FILENAME on the target, in the
2198    filesystem as seen by INF.  If INF is NULL, use the filesystem seen
2199    by the debugger (GDB or, for remote targets, the remote stub).
2200    Return a null-terminated string allocated via xmalloc, or NULL if
2201    an error occurs (and set *TARGET_ERRNO).  */
2202 extern gdb::optional<std::string> target_fileio_readlink
2203     (struct inferior *inf, const char *filename, fileio_error *target_errno);
2204 
2205 /* Read target file FILENAME, in the filesystem as seen by INF.  If
2206    INF is NULL, use the filesystem seen by the debugger (GDB or, for
2207    remote targets, the remote stub).  The return value will be -1 if
2208    the transfer fails or is not supported; 0 if the object is empty;
2209    or the length of the object otherwise.  If a positive value is
2210    returned, a sufficiently large buffer will be allocated using
2211    xmalloc and returned in *BUF_P containing the contents of the
2212    object.
2213 
2214    This method should be used for objects sufficiently small to store
2215    in a single xmalloc'd buffer, when no fixed bound on the object's
2216    size is known in advance.  */
2217 extern LONGEST target_fileio_read_alloc (struct inferior *inf,
2218 					 const char *filename,
2219 					 gdb_byte **buf_p);
2220 
2221 /* Read target file FILENAME, in the filesystem as seen by INF.  If
2222    INF is NULL, use the filesystem seen by the debugger (GDB or, for
2223    remote targets, the remote stub).  The result is NUL-terminated and
2224    returned as a string, allocated using xmalloc.  If an error occurs
2225    or the transfer is unsupported, NULL is returned.  Empty objects
2226    are returned as allocated but empty strings.  A warning is issued
2227    if the result contains any embedded NUL bytes.  */
2228 extern gdb::unique_xmalloc_ptr<char> target_fileio_read_stralloc
2229     (struct inferior *inf, const char *filename);
2230 
2231 /* Invalidate the target associated with open handles that were open
2232    on target TARG, since we're about to close (and maybe destroy) the
2233    target.  The handles remain open from the client's perspective, but
2234    trying to do anything with them other than closing them will fail
2235    with EIO.  */
2236 extern void fileio_handles_invalidate_target (target_ops *targ);
2237 
2238 /* Tracepoint-related operations.  */
2239 
2240 extern void target_trace_init ();
2241 
2242 extern void target_download_tracepoint (bp_location *location);
2243 
2244 extern bool target_can_download_tracepoint ();
2245 
2246 extern void target_download_trace_state_variable (const trace_state_variable &tsv);
2247 
2248 extern void target_enable_tracepoint (bp_location *loc);
2249 
2250 extern void target_disable_tracepoint (bp_location *loc);
2251 
2252 extern void target_trace_start ();
2253 
2254 extern void target_trace_set_readonly_regions ();
2255 
2256 extern int target_get_trace_status (trace_status *ts);
2257 
2258 extern void target_get_tracepoint_status (breakpoint *tp, uploaded_tp *utp);
2259 
2260 extern void target_trace_stop ();
2261 
2262 extern int target_trace_find (trace_find_type type, int num, CORE_ADDR addr1,
2263 			      CORE_ADDR addr2, int *tpp);
2264 
2265 extern bool target_get_trace_state_variable_value (int tsv, LONGEST *val);
2266 
2267 extern int target_save_trace_data (const char *filename);
2268 
2269 extern int target_upload_tracepoints (uploaded_tp **utpp);
2270 
2271 extern int target_upload_trace_state_variables (uploaded_tsv **utsvp);
2272 
2273 extern LONGEST target_get_raw_trace_data (gdb_byte *buf, ULONGEST offset,
2274 					  LONGEST len);
2275 
2276 extern int target_get_min_fast_tracepoint_insn_len ();
2277 
2278 extern void target_set_disconnected_tracing (int val);
2279 
2280 extern void target_set_circular_trace_buffer (int val);
2281 
2282 extern void target_set_trace_buffer_size (LONGEST val);
2283 
2284 extern bool target_set_trace_notes (const char *user, const char *notes,
2285 				    const char *stopnotes);
2286 
2287 extern bool target_get_tib_address (ptid_t ptid, CORE_ADDR *addr);
2288 
2289 extern void target_set_permissions ();
2290 
2291 extern bool target_static_tracepoint_marker_at
2292   (CORE_ADDR addr, static_tracepoint_marker *marker);
2293 
2294 extern std::vector<static_tracepoint_marker>
2295   target_static_tracepoint_markers_by_strid (const char *marker_id);
2296 
2297 extern traceframe_info_up target_traceframe_info ();
2298 
2299 extern bool target_use_agent (bool use);
2300 
2301 extern bool target_can_use_agent ();
2302 
2303 extern bool target_augmented_libraries_svr4_read ();
2304 
2305 extern bool target_supports_memory_tagging ();
2306 
2307 extern bool target_fetch_memtags (CORE_ADDR address, size_t len,
2308 				  gdb::byte_vector &tags, int type);
2309 
2310 extern bool target_store_memtags (CORE_ADDR address, size_t len,
2311 				  const gdb::byte_vector &tags, int type);
2312 
2313 /* Command logging facility.  */
2314 
2315 extern void target_log_command (const char *p);
2316 
2317 extern int target_core_of_thread (ptid_t ptid);
2318 
2319 /* See to_get_unwinder in struct target_ops.  */
2320 extern const struct frame_unwind *target_get_unwinder (void);
2321 
2322 /* See to_get_tailcall_unwinder in struct target_ops.  */
2323 extern const struct frame_unwind *target_get_tailcall_unwinder (void);
2324 
2325 /* This implements basic memory verification, reading target memory
2326    and performing the comparison here (as opposed to accelerated
2327    verification making use of the qCRC packet, for example).  */
2328 
2329 extern int simple_verify_memory (struct target_ops* ops,
2330 				 const gdb_byte *data,
2331 				 CORE_ADDR memaddr, ULONGEST size);
2332 
2333 /* Verify that the memory in the [MEMADDR, MEMADDR+SIZE) range matches
2334    the contents of [DATA,DATA+SIZE).  Returns 1 if there's a match, 0
2335    if there's a mismatch, and -1 if an error is encountered while
2336    reading memory.  Throws an error if the functionality is found not
2337    to be supported by the current target.  */
2338 int target_verify_memory (const gdb_byte *data,
2339 			  CORE_ADDR memaddr, ULONGEST size);
2340 
2341 /* Routines for maintenance of the target structures...
2342 
2343    add_target:   Add a target to the list of all possible targets.
2344    This only makes sense for targets that should be activated using
2345    the "target TARGET_NAME ..." command.
2346 
2347    push_target:  Make this target the top of the stack of currently used
2348    targets, within its particular stratum of the stack.  Result
2349    is 0 if now atop the stack, nonzero if not on top (maybe
2350    should warn user).
2351 
2352    unpush_target: Remove this from the stack of currently used targets,
2353    no matter where it is on the list.  Returns 0 if no
2354    change, 1 if removed from stack.  */
2355 
2356 /* Type of callback called when the user activates a target with
2357    "target TARGET_NAME".  The callback routine takes the rest of the
2358    parameters from the command, and (if successful) pushes a new
2359    target onto the stack.  */
2360 typedef void target_open_ftype (const char *args, int from_tty);
2361 
2362 /* Add the target described by INFO to the list of possible targets
2363    and add a new command 'target $(INFO->shortname)'.  Set COMPLETER
2364    as the command's completer if not NULL.  */
2365 
2366 extern void add_target (const target_info &info,
2367 			target_open_ftype *func,
2368 			completer_ftype *completer = NULL);
2369 
2370 /* Adds a command ALIAS for the target described by INFO and marks it
2371    deprecated.  This is useful for maintaining backwards compatibility
2372    when renaming targets.  */
2373 
2374 extern void add_deprecated_target_alias (const target_info &info,
2375 					 const char *alias);
2376 
2377 /* A unique_ptr helper to unpush a target.  */
2378 
2379 struct target_unpusher
2380 {
2381   void operator() (struct target_ops *ops) const;
2382 };
2383 
2384 /* A unique_ptr that unpushes a target on destruction.  */
2385 
2386 typedef std::unique_ptr<struct target_ops, target_unpusher> target_unpush_up;
2387 
2388 extern void target_pre_inferior (int);
2389 
2390 extern void target_preopen (int);
2391 
2392 extern CORE_ADDR target_translate_tls_address (struct objfile *objfile,
2393 					       CORE_ADDR offset);
2394 
2395 /* Return the "section" containing the specified address.  */
2396 const struct target_section *target_section_by_addr (struct target_ops *target,
2397 						     CORE_ADDR addr);
2398 
2399 /* Return the target section table this target (or the targets
2400    beneath) currently manipulate.  */
2401 
2402 extern const target_section_table *target_get_section_table
2403   (struct target_ops *target);
2404 
2405 /* Default implementation of get_section_table for dummy_target.  */
2406 
2407 extern const target_section_table *default_get_section_table ();
2408 
2409 /* From mem-break.c */
2410 
2411 extern int memory_remove_breakpoint (struct target_ops *,
2412 				     struct gdbarch *, struct bp_target_info *,
2413 				     enum remove_bp_reason);
2414 
2415 extern int memory_insert_breakpoint (struct target_ops *,
2416 				     struct gdbarch *, struct bp_target_info *);
2417 
2418 /* Convenience template use to add memory breakpoints support to a
2419    target.  */
2420 
2421 template <typename BaseTarget>
2422 struct memory_breakpoint_target : public BaseTarget
2423 {
2424   int insert_breakpoint (struct gdbarch *gdbarch,
2425 			 struct bp_target_info *bp_tgt) override
2426   { return memory_insert_breakpoint (this, gdbarch, bp_tgt); }
2427 
2428   int remove_breakpoint (struct gdbarch *gdbarch,
2429 			 struct bp_target_info *bp_tgt,
2430 			 enum remove_bp_reason reason) override
2431   { return memory_remove_breakpoint (this, gdbarch, bp_tgt, reason); }
2432 };
2433 
2434 /* Check whether the memory at the breakpoint's placed address still
2435    contains the expected breakpoint instruction.  */
2436 
2437 extern int memory_validate_breakpoint (struct gdbarch *gdbarch,
2438 				       struct bp_target_info *bp_tgt);
2439 
2440 extern int default_memory_remove_breakpoint (struct gdbarch *,
2441 					     struct bp_target_info *);
2442 
2443 extern int default_memory_insert_breakpoint (struct gdbarch *,
2444 					     struct bp_target_info *);
2445 
2446 
2447 /* From target.c */
2448 
2449 extern void initialize_targets (void);
2450 
2451 extern void noprocess (void) ATTRIBUTE_NORETURN;
2452 
2453 extern void target_require_runnable (void);
2454 
2455 /* Find the target at STRATUM.  If no target is at that stratum,
2456    return NULL.  */
2457 
2458 struct target_ops *find_target_at (enum strata stratum);
2459 
2460 /* Read OS data object of type TYPE from the target, and return it in XML
2461    format.  The return value follows the same rules as target_read_stralloc.  */
2462 
2463 extern gdb::optional<gdb::char_vector> target_get_osdata (const char *type);
2464 
2465 /* Stuff that should be shared among the various remote targets.  */
2466 
2467 
2468 /* Timeout limit for response from target.  */
2469 extern int remote_timeout;
2470 
2471 
2472 
2473 /* Set the show memory breakpoints mode to show, and return a
2474    scoped_restore to restore it back to the current value.  */
2475 extern scoped_restore_tmpl<int>
2476     make_scoped_restore_show_memory_breakpoints (int show);
2477 
2478 extern bool may_write_registers;
2479 extern bool may_write_memory;
2480 extern bool may_insert_breakpoints;
2481 extern bool may_insert_tracepoints;
2482 extern bool may_insert_fast_tracepoints;
2483 extern bool may_stop;
2484 
2485 extern void update_target_permissions (void);
2486 
2487 
2488 /* Imported from machine dependent code.  */
2489 
2490 /* See to_enable_btrace in struct target_ops.  */
2491 extern struct btrace_target_info *
2492   target_enable_btrace (thread_info *tp, const struct btrace_config *);
2493 
2494 /* See to_disable_btrace in struct target_ops.  */
2495 extern void target_disable_btrace (struct btrace_target_info *btinfo);
2496 
2497 /* See to_teardown_btrace in struct target_ops.  */
2498 extern void target_teardown_btrace (struct btrace_target_info *btinfo);
2499 
2500 /* See to_read_btrace in struct target_ops.  */
2501 extern enum btrace_error target_read_btrace (struct btrace_data *,
2502 					     struct btrace_target_info *,
2503 					     enum btrace_read_type);
2504 
2505 /* See to_btrace_conf in struct target_ops.  */
2506 extern const struct btrace_config *
2507   target_btrace_conf (const struct btrace_target_info *);
2508 
2509 /* See to_stop_recording in struct target_ops.  */
2510 extern void target_stop_recording (void);
2511 
2512 /* See to_save_record in struct target_ops.  */
2513 extern void target_save_record (const char *filename);
2514 
2515 /* Query if the target supports deleting the execution log.  */
2516 extern int target_supports_delete_record (void);
2517 
2518 /* See to_delete_record in struct target_ops.  */
2519 extern void target_delete_record (void);
2520 
2521 /* See to_record_method.  */
2522 extern enum record_method target_record_method (ptid_t ptid);
2523 
2524 /* See to_record_is_replaying in struct target_ops.  */
2525 extern int target_record_is_replaying (ptid_t ptid);
2526 
2527 /* See to_record_will_replay in struct target_ops.  */
2528 extern int target_record_will_replay (ptid_t ptid, int dir);
2529 
2530 /* See to_record_stop_replaying in struct target_ops.  */
2531 extern void target_record_stop_replaying (void);
2532 
2533 /* See to_goto_record_begin in struct target_ops.  */
2534 extern void target_goto_record_begin (void);
2535 
2536 /* See to_goto_record_end in struct target_ops.  */
2537 extern void target_goto_record_end (void);
2538 
2539 /* See to_goto_record in struct target_ops.  */
2540 extern void target_goto_record (ULONGEST insn);
2541 
2542 /* See to_insn_history.  */
2543 extern void target_insn_history (int size, gdb_disassembly_flags flags);
2544 
2545 /* See to_insn_history_from.  */
2546 extern void target_insn_history_from (ULONGEST from, int size,
2547 				      gdb_disassembly_flags flags);
2548 
2549 /* See to_insn_history_range.  */
2550 extern void target_insn_history_range (ULONGEST begin, ULONGEST end,
2551 				       gdb_disassembly_flags flags);
2552 
2553 /* See to_call_history.  */
2554 extern void target_call_history (int size, record_print_flags flags);
2555 
2556 /* See to_call_history_from.  */
2557 extern void target_call_history_from (ULONGEST begin, int size,
2558 				      record_print_flags flags);
2559 
2560 /* See to_call_history_range.  */
2561 extern void target_call_history_range (ULONGEST begin, ULONGEST end,
2562 				       record_print_flags flags);
2563 
2564 /* See to_prepare_to_generate_core.  */
2565 extern void target_prepare_to_generate_core (void);
2566 
2567 /* See to_done_generating_core.  */
2568 extern void target_done_generating_core (void);
2569 
2570 #endif /* !defined (TARGET_H) */
2571