+
+ /* Return true if THREAD is known to be stopped now. */
+ int (*thread_stopped) (struct thread_info *thread);
+
+ /* Read Thread Information Block address. */
+ int (*get_tib_address) (ptid_t ptid, CORE_ADDR *address);
+
+ /* Pause all threads. If FREEZE, arrange for any resume attempt to
+ be ignored until an unpause_all call unfreezes threads again.
+ There can be nested calls to pause_all, so a freeze counter
+ should be maintained. */
+ void (*pause_all) (int freeze);
+
+ /* Unpause all threads. Threads that hadn't been resumed by the
+ client should be left stopped. Basically a pause/unpause call
+ pair should not end up resuming threads that were stopped before
+ the pause call. */
+ void (*unpause_all) (int unfreeze);
+
+ /* Stabilize all threads. That is, force them out of jump pads. */
+ void (*stabilize_threads) (void);
+
+ /* Install a fast tracepoint jump pad. TPOINT is the address of the
+ tracepoint internal object as used by the IPA agent. TPADDR is
+ the address of tracepoint. COLLECTOR is address of the function
+ the jump pad redirects to. LOCKADDR is the address of the jump
+ pad lock object. ORIG_SIZE is the size in bytes of the
+ instruction at TPADDR. JUMP_ENTRY points to the address of the
+ jump pad entry, and on return holds the address past the end of
+ the created jump pad. If a trampoline is created by the function,
+ then TRAMPOLINE and TRAMPOLINE_SIZE return the address and size of
+ the trampoline, else they remain unchanged. JJUMP_PAD_INSN is a
+ buffer containing a copy of the instruction at TPADDR.
+ ADJUST_INSN_ADDR and ADJUST_INSN_ADDR_END are output parameters that
+ return the address range where the instruction at TPADDR was relocated
+ to. If an error occurs, the ERR may be used to pass on an error
+ message. */
+ int (*install_fast_tracepoint_jump_pad) (CORE_ADDR tpoint, CORE_ADDR tpaddr,
+ CORE_ADDR collector,
+ CORE_ADDR lockaddr,
+ ULONGEST orig_size,
+ CORE_ADDR *jump_entry,
+ CORE_ADDR *trampoline,
+ ULONGEST *trampoline_size,
+ unsigned char *jjump_pad_insn,
+ ULONGEST *jjump_pad_insn_size,
+ CORE_ADDR *adjusted_insn_addr,
+ CORE_ADDR *adjusted_insn_addr_end,
+ char *err);
+
+ /* Return the bytecode operations vector for the current inferior.
+ Returns NULL if bytecode compilation is not supported. */
+ struct emit_ops *(*emit_ops) (void);
+
+ /* Returns true if the target supports disabling randomization. */
+ int (*supports_disable_randomization) (void);
+
+ /* Return the minimum length of an instruction that can be safely overwritten
+ for use as a fast tracepoint. */
+ int (*get_min_fast_tracepoint_insn_len) (void);
+
+ /* Read solib info on SVR4 platforms. */
+ int (*qxfer_libraries_svr4) (const char *annex, unsigned char *readbuf,
+ unsigned const char *writebuf,
+ CORE_ADDR offset, int len);
+
+ /* Return true if target supports debugging agent. */
+ int (*supports_agent) (void);
+
+ /* Check whether the target supports branch tracing. */
+ int (*supports_btrace) (struct target_ops *);
+
+ /* Enable branch tracing for @ptid and allocate a branch trace target
+ information struct for reading and for disabling branch trace. */
+ struct btrace_target_info *(*enable_btrace) (ptid_t ptid);
+
+ /* Disable branch tracing.
+ Returns zero on success, non-zero otherwise. */
+ int (*disable_btrace) (struct btrace_target_info *tinfo);
+
+ /* Read branch trace data into buffer. We use an int to specify the type
+ to break a cyclic dependency.
+ Return 0 on success; print an error message into BUFFER and return -1,
+ otherwise. */
+ int (*read_btrace) (struct btrace_target_info *, struct buffer *, int type);
+
+ /* Return true if target supports range stepping. */
+ int (*supports_range_stepping) (void);