Index: gdb/target.h |
diff --git a/gdb/target.h b/gdb/target.h |
index 54c58d634484798451f603ea77ff7ec2c574b1e5..f22e5c691826c204aa9be298e218fa44daf3f0ec 100644 |
--- a/gdb/target.h |
+++ b/gdb/target.h |
@@ -1,6 +1,6 @@ |
/* Interface between GDB and target environments, including files and processes |
- Copyright (C) 1990-2012 Free Software Foundation, Inc. |
+ Copyright (C) 1990-2013 Free Software Foundation, Inc. |
Contributed by Cygnus Support. Written by John Gilmore. |
@@ -37,6 +37,7 @@ struct uploaded_tp; |
struct static_tracepoint_marker; |
struct traceframe_info; |
struct expression; |
+struct dcache_struct; |
/* This include file defines the interface between the main part |
of the debugger, and the part which is target-specific, or |
@@ -57,11 +58,16 @@ struct expression; |
it goes into the file stratum, which is always below the process |
stratum. */ |
+#include "target/resume.h" |
+#include "target/wait.h" |
+#include "target/waitstatus.h" |
#include "bfd.h" |
#include "symtab.h" |
#include "memattr.h" |
#include "vec.h" |
#include "gdb_signals.h" |
+#include "btrace.h" |
+#include "command.h" |
enum strata |
{ |
@@ -79,106 +85,6 @@ enum thread_control_capabilities |
tc_schedlock = 1, /* Can lock the thread scheduler. */ |
}; |
-/* Stuff for target_wait. */ |
- |
-/* Generally, what has the program done? */ |
-enum target_waitkind |
- { |
- /* The program has exited. The exit status is in value.integer. */ |
- TARGET_WAITKIND_EXITED, |
- |
- /* The program has stopped with a signal. Which signal is in |
- value.sig. */ |
- TARGET_WAITKIND_STOPPED, |
- |
- /* The program has terminated with a signal. Which signal is in |
- value.sig. */ |
- TARGET_WAITKIND_SIGNALLED, |
- |
- /* The program is letting us know that it dynamically loaded something |
- (e.g. it called load(2) on AIX). */ |
- TARGET_WAITKIND_LOADED, |
- |
- /* The program has forked. A "related" process' PTID is in |
- value.related_pid. I.e., if the child forks, value.related_pid |
- is the parent's ID. */ |
- |
- TARGET_WAITKIND_FORKED, |
- |
- /* The program has vforked. A "related" process's PTID is in |
- value.related_pid. */ |
- |
- TARGET_WAITKIND_VFORKED, |
- |
- /* The program has exec'ed a new executable file. The new file's |
- pathname is pointed to by value.execd_pathname. */ |
- |
- TARGET_WAITKIND_EXECD, |
- |
- /* The program had previously vforked, and now the child is done |
- with the shared memory region, because it exec'ed or exited. |
- Note that the event is reported to the vfork parent. This is |
- only used if GDB did not stay attached to the vfork child, |
- otherwise, a TARGET_WAITKIND_EXECD or |
- TARGET_WAITKIND_EXIT|SIGNALLED event associated with the child |
- has the same effect. */ |
- TARGET_WAITKIND_VFORK_DONE, |
- |
- /* The program has entered or returned from a system call. On |
- HP-UX, this is used in the hardware watchpoint implementation. |
- The syscall's unique integer ID number is in value.syscall_id. */ |
- |
- TARGET_WAITKIND_SYSCALL_ENTRY, |
- TARGET_WAITKIND_SYSCALL_RETURN, |
- |
- /* Nothing happened, but we stopped anyway. This perhaps should be handled |
- within target_wait, but I'm not sure target_wait should be resuming the |
- inferior. */ |
- TARGET_WAITKIND_SPURIOUS, |
- |
- /* An event has occured, but we should wait again. |
- Remote_async_wait() returns this when there is an event |
- on the inferior, but the rest of the world is not interested in |
- it. The inferior has not stopped, but has just sent some output |
- to the console, for instance. In this case, we want to go back |
- to the event loop and wait there for another event from the |
- inferior, rather than being stuck in the remote_async_wait() |
- function. sThis way the event loop is responsive to other events, |
- like for instance the user typing. */ |
- TARGET_WAITKIND_IGNORE, |
- |
- /* The target has run out of history information, |
- and cannot run backward any further. */ |
- TARGET_WAITKIND_NO_HISTORY, |
- |
- /* There are no resumed children left in the program. */ |
- TARGET_WAITKIND_NO_RESUMED |
- }; |
- |
-struct target_waitstatus |
- { |
- enum target_waitkind kind; |
- |
- /* Forked child pid, execd pathname, exit status, signal number or |
- syscall number. */ |
- union |
- { |
- int integer; |
- enum gdb_signal sig; |
- ptid_t related_pid; |
- char *execd_pathname; |
- int syscall_number; |
- } |
- value; |
- }; |
- |
-/* Options that can be passed to target_wait. */ |
- |
-/* Return immediately if there's no event already queued. If this |
- options is not requested, target_wait blocks waiting for an |
- event. */ |
-#define TARGET_WNOHANG 1 |
- |
/* The structure below stores information about a system call. |
It is basically used in the "catch syscall" command, and in |
every function that gives information about a system call. |
@@ -198,6 +104,10 @@ struct syscall |
Space for the result is malloc'd, caller must free. */ |
extern char *target_waitstatus_to_string (const struct target_waitstatus *); |
+/* Return a pretty printed form of TARGET_OPTIONS. |
+ Space for the result is malloc'd, caller must free. */ |
+extern char *target_options_to_string (int target_options); |
+ |
/* Possible types of events that the inferior handler will have to |
deal with. */ |
enum inferior_event_type |
@@ -235,6 +145,9 @@ enum target_object |
if it is not in a region marked as such, since it is known to be |
"normal" RAM. */ |
TARGET_OBJECT_STACK_MEMORY, |
+ /* Memory known to be part of the target code. This is cached even |
+ if it is not in a region marked as such. */ |
+ TARGET_OBJECT_CODE_MEMORY, |
/* Kernel Unwind Table. See "ia64-tdep.c". */ |
TARGET_OBJECT_UNWIND_TABLE, |
/* Transfer auxilliary vector. */ |
@@ -255,6 +168,8 @@ enum target_object |
TARGET_OBJECT_LIBRARIES, |
/* Currently loaded libraries specific for SVR4 systems, in XML format. */ |
TARGET_OBJECT_LIBRARIES_SVR4, |
+ /* Currently loaded libraries specific to AIX systems, in XML format. */ |
+ TARGET_OBJECT_LIBRARIES_AIX, |
/* Get OS specific data. The ANNEX specifies the type (running |
processes, etc.). The data being transfered is expected to follow |
the DTD specified in features/osdata.dtd. */ |
@@ -282,10 +197,32 @@ enum target_object |
/* Darwin dynamic linker info data. */ |
TARGET_OBJECT_DARWIN_DYLD_INFO, |
/* OpenVMS Unwind Information Block. */ |
- TARGET_OBJECT_OPENVMS_UIB |
+ TARGET_OBJECT_OPENVMS_UIB, |
+ /* Branch trace data, in XML format. */ |
+ TARGET_OBJECT_BTRACE |
/* Possible future objects: TARGET_OBJECT_FILE, ... */ |
}; |
+/* Possible error codes returned by target_xfer_partial, etc. */ |
+ |
+enum target_xfer_error |
+{ |
+ /* Generic I/O error. Note that it's important that this is '-1', |
+ as we still have target_xfer-related code returning hardcoded |
+ '-1' on error. */ |
+ TARGET_XFER_E_IO = -1, |
+ |
+ /* Transfer failed because the piece of the object requested is |
+ unavailable. */ |
+ TARGET_XFER_E_UNAVAILABLE = -2, |
+ |
+ /* Keep list in sync with target_xfer_error_to_string. */ |
+}; |
+ |
+/* Return the string form of ERR. */ |
+ |
+extern const char *target_xfer_error_to_string (enum target_xfer_error err); |
+ |
/* Enumeration of the kinds of traceframe searches that a target may |
be able to perform. */ |
@@ -306,11 +243,12 @@ DEF_VEC_P(static_tracepoint_marker_p); |
starting point. The ANNEX can be used to provide additional |
data-specific information to the target. |
- Return the number of bytes actually transfered, or -1 if the |
- transfer is not supported or otherwise fails. Return of a positive |
- value less than LEN indicates that no further transfer is possible. |
- Unlike the raw to_xfer_partial interface, callers of these |
- functions do not need to retry partial transfers. */ |
+ Return the number of bytes actually transfered, or a negative error |
+ code (an 'enum target_xfer_error' value) if the transfer is not |
+ supported or otherwise fails. Return of a positive value less than |
+ LEN indicates that no further transfer is possible. Unlike the raw |
+ to_xfer_partial interface, callers of these functions do not need |
+ to retry partial transfers. */ |
extern LONGEST target_read (struct target_ops *ops, |
enum target_object object, |
@@ -380,6 +318,14 @@ extern char *target_read_stralloc (struct target_ops *ops, |
enum target_object object, |
const char *annex); |
+/* See target_ops->to_xfer_partial. */ |
+ |
+extern LONGEST target_xfer_partial (struct target_ops *ops, |
+ enum target_object object, |
+ const char *annex, |
+ void *readbuf, const void *writebuf, |
+ ULONGEST offset, LONGEST len); |
+ |
/* Wrappers to target read/write that perform memory transfers. They |
throw an error if the memory transfer fails. |
@@ -413,11 +359,11 @@ struct target_ops |
/* Old targets with a static target vector provide "to_close". |
New re-entrant targets provide "to_xclose" and that is expected |
to xfree everything (including the "struct target_ops"). */ |
- void (*to_xclose) (struct target_ops *targ, int quitting); |
- void (*to_close) (int); |
+ void (*to_xclose) (struct target_ops *targ); |
+ void (*to_close) (void); |
void (*to_attach) (struct target_ops *ops, char *, int); |
void (*to_post_attach) (int); |
- void (*to_detach) (struct target_ops *ops, char *, int); |
+ void (*to_detach) (struct target_ops *ops, const char *, int); |
void (*to_disconnect) (struct target_ops *, char *, int); |
void (*to_resume) (struct target_ops *, ptid_t, int, enum gdb_signal); |
ptid_t (*to_wait) (struct target_ops *, |
@@ -489,7 +435,7 @@ struct target_ops |
void (*to_terminal_ours_for_output) (void); |
void (*to_terminal_ours) (void); |
void (*to_terminal_save_ours) (void); |
- void (*to_terminal_info) (char *, int); |
+ void (*to_terminal_info) (const char *, int); |
void (*to_kill) (struct target_ops *); |
void (*to_load) (char *, int); |
void (*to_create_inferior) (struct target_ops *, |
@@ -499,7 +445,7 @@ struct target_ops |
int (*to_remove_fork_catchpoint) (int); |
int (*to_insert_vfork_catchpoint) (int); |
int (*to_remove_vfork_catchpoint) (int); |
- int (*to_follow_fork) (struct target_ops *, int); |
+ int (*to_follow_fork) (struct target_ops *, int, int); |
int (*to_insert_exec_catchpoint) (int); |
int (*to_remove_exec_catchpoint) (int); |
int (*to_set_syscall_catchpoint) (int, int, int, int, int *); |
@@ -562,7 +508,8 @@ struct target_ops |
data-specific information to the target. |
Return the number of bytes actually transfered, zero when no |
- further transfer is possible, and -1 when the transfer is not |
+ further transfer is possible, and a negative error code (really |
+ an 'enum target_xfer_error' value) when the transfer is not |
supported. Return of a positive value smaller than LEN does |
not indicate the end of the object, only the end of the |
transfer; higher level code should continue transferring if |
@@ -683,9 +630,9 @@ struct target_ops |
to_thread_architecture would return SPU, otherwise PPC32 or PPC64). |
This is architecture used to perform decr_pc_after_break adjustment, |
and also determines the frame architecture of the innermost frame. |
- ptrace operations need to operate according to target_gdbarch. |
+ ptrace operations need to operate according to target_gdbarch (). |
- The default implementation always returns target_gdbarch. */ |
+ The default implementation always returns target_gdbarch (). */ |
struct gdbarch *(*to_thread_architecture) (struct target_ops *, ptid_t); |
/* Determine current address space of thread PTID. |
@@ -776,7 +723,7 @@ struct target_ops |
TPP. If no trace frame matches, return -1. May throw if the |
operation fails. */ |
int (*to_trace_find) (enum trace_find_type type, int num, |
- ULONGEST addr1, ULONGEST addr2, int *tpp); |
+ CORE_ADDR addr1, CORE_ADDR addr2, int *tpp); |
/* Get the value of the trace state variable number TSV, returning |
1 if the value is known and writing the value itself into the |
@@ -802,10 +749,13 @@ struct target_ops |
disconnection - set VAL to 1 to keep tracing, 0 to stop. */ |
void (*to_set_disconnected_tracing) (int val); |
void (*to_set_circular_trace_buffer) (int val); |
+ /* Set the size of trace buffer in the target. */ |
+ void (*to_set_trace_buffer_size) (LONGEST val); |
/* Add/change textual notes about the trace run, returning 1 if |
successful, 0 otherwise. */ |
- int (*to_set_trace_notes) (char *user, char *notes, char* stopnotes); |
+ int (*to_set_trace_notes) (const char *user, const char *notes, |
+ const char *stopnotes); |
/* Return the processor core that thread PTID was last seen on. |
This information is updated only when: |
@@ -841,9 +791,18 @@ struct target_ops |
(const char *id); |
/* Return a traceframe info object describing the current |
- traceframe's contents. This method should not cache data; |
- higher layers take care of caching, invalidating, and |
- re-fetching when necessary. */ |
+ traceframe's contents. If the target doesn't support |
+ traceframe info, return NULL. If the current traceframe is not |
+ selected (the current traceframe number is -1), the target can |
+ choose to return either NULL or an empty traceframe info. If |
+ NULL is returned, for example in remote target, GDB will read |
+ from the live inferior. If an empty traceframe info is |
+ returned, for example in tfile target, which means the |
+ traceframe info is available, but the requested memory is not |
+ available in it. GDB will try to see if the requested memory |
+ is available in the read-only sections. This method should not |
+ cache data; higher layers take care of caching, invalidating, |
+ and re-fetching when necessary. */ |
struct traceframe_info *(*to_traceframe_info) (void); |
/* Ask the target to use or not to use agent according to USE. Return 1 |
@@ -853,6 +812,85 @@ struct target_ops |
/* Is the target able to use agent in current state? */ |
int (*to_can_use_agent) (void); |
+ /* Check whether the target supports branch tracing. */ |
+ int (*to_supports_btrace) (void); |
+ |
+ /* Enable branch tracing for PTID and allocate a branch trace target |
+ information struct for reading and for disabling branch trace. */ |
+ struct btrace_target_info *(*to_enable_btrace) (ptid_t ptid); |
+ |
+ /* Disable branch tracing and deallocate TINFO. */ |
+ void (*to_disable_btrace) (struct btrace_target_info *tinfo); |
+ |
+ /* Disable branch tracing and deallocate TINFO. This function is similar |
+ to to_disable_btrace, except that it is called during teardown and is |
+ only allowed to perform actions that are safe. A counter-example would |
+ be attempting to talk to a remote target. */ |
+ void (*to_teardown_btrace) (struct btrace_target_info *tinfo); |
+ |
+ /* Read branch trace data. */ |
+ VEC (btrace_block_s) *(*to_read_btrace) (struct btrace_target_info *, |
+ enum btrace_read_type); |
+ |
+ /* Stop trace recording. */ |
+ void (*to_stop_recording) (void); |
+ |
+ /* Print information about the recording. */ |
+ void (*to_info_record) (void); |
+ |
+ /* Save the recorded execution trace into a file. */ |
+ void (*to_save_record) (const char *filename); |
+ |
+ /* Delete the recorded execution trace from the current position onwards. */ |
+ void (*to_delete_record) (void); |
+ |
+ /* Query if the record target is currently replaying. */ |
+ int (*to_record_is_replaying) (void); |
+ |
+ /* Go to the begin of the execution trace. */ |
+ void (*to_goto_record_begin) (void); |
+ |
+ /* Go to the end of the execution trace. */ |
+ void (*to_goto_record_end) (void); |
+ |
+ /* Go to a specific location in the recorded execution trace. */ |
+ void (*to_goto_record) (ULONGEST insn); |
+ |
+ /* Disassemble SIZE instructions in the recorded execution trace from |
+ the current position. |
+ If SIZE < 0, disassemble abs (SIZE) preceding instructions; otherwise, |
+ disassemble SIZE succeeding instructions. */ |
+ void (*to_insn_history) (int size, int flags); |
+ |
+ /* Disassemble SIZE instructions in the recorded execution trace around |
+ FROM. |
+ If SIZE < 0, disassemble abs (SIZE) instructions before FROM; otherwise, |
+ disassemble SIZE instructions after FROM. */ |
+ void (*to_insn_history_from) (ULONGEST from, int size, int flags); |
+ |
+ /* Disassemble a section of the recorded execution trace from instruction |
+ BEGIN (inclusive) to instruction END (exclusive). */ |
+ void (*to_insn_history_range) (ULONGEST begin, ULONGEST end, int flags); |
+ |
+ /* Print a function trace of the recorded execution trace. |
+ If SIZE < 0, print abs (SIZE) preceding functions; otherwise, print SIZE |
+ succeeding functions. */ |
+ void (*to_call_history) (int size, int flags); |
+ |
+ /* Print a function trace of the recorded execution trace starting |
+ at function FROM. |
+ If SIZE < 0, print abs (SIZE) functions before FROM; otherwise, print |
+ SIZE functions after FROM. */ |
+ void (*to_call_history_from) (ULONGEST begin, int size, int flags); |
+ |
+ /* Print a function trace of an execution trace section from function BEGIN |
+ (inclusive) to function END (exclusive). */ |
+ void (*to_call_history_range) (ULONGEST begin, ULONGEST end, int flags); |
+ |
+ /* Nonzero if TARGET_OBJECT_LIBRARIES_SVR4 may be read with a |
+ non-empty annex. */ |
+ int (*to_augmented_libraries_svr4_read) (void); |
+ |
int to_magic; |
/* Need sub-structure for target machine related rather than comm related? |
*/ |
@@ -875,15 +913,13 @@ extern struct target_ops current_target; |
#define target_longname (current_target.to_longname) |
/* Does whatever cleanup is required for a target that we are no |
- longer going to be calling. QUITTING indicates that GDB is exiting |
- and should not get hung on an error (otherwise it is important to |
- perform clean termination, even if it takes a while). This routine |
- is automatically always called after popping the target off the |
- target stack - the target's own methods are no longer available |
- through the target vector. Closing file descriptors and freeing all |
- memory allocated memory are typical things it should do. */ |
+ longer going to be calling. This routine is automatically always |
+ called after popping the target off the target stack - the target's |
+ own methods are no longer available through the target vector. |
+ Closing file descriptors and freeing all memory allocated memory are |
+ typical things it should do. */ |
-void target_close (struct target_ops *targ, int quitting); |
+void target_close (struct target_ops *targ); |
/* Attaches to a process on the target side. Arguments are as passed |
to the `attach' command by the user. This routine can be called |
@@ -917,7 +953,7 @@ void target_attach (char *, int); |
typed by the user (e.g. a signal to send the process). FROM_TTY |
says whether to be verbose or not. */ |
-extern void target_detach (char *, int); |
+extern void target_detach (const char *, int); |
/* Disconnect from the current target without resuming it (leaving it |
waiting for a debugger). */ |
@@ -972,9 +1008,12 @@ extern void target_store_registers (struct regcache *regcache, int regs); |
struct address_space *target_thread_address_space (ptid_t); |
-/* Implement the "info proc" command. */ |
+/* Implement the "info proc" command. This returns one if the request |
+ was handled, and zero otherwise. It can also throw an exception if |
+ an error was encountered while attempting to handle the |
+ request. */ |
-void target_info_proc (char *, enum info_proc_what); |
+int target_info_proc (char *, enum info_proc_what); |
/* Returns true if this target can debug multiple processes |
simultaneously. */ |
@@ -1007,16 +1046,18 @@ int target_supports_disable_randomization (void); |
#define target_can_run_breakpoint_commands() \ |
(*current_target.to_can_run_breakpoint_commands) () |
-/* Invalidate all target dcaches. */ |
-extern void target_dcache_invalidate (void); |
- |
extern int target_read_string (CORE_ADDR, char **, int, int *); |
extern int target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, |
ssize_t len); |
+extern int target_read_raw_memory (CORE_ADDR memaddr, gdb_byte *myaddr, |
+ ssize_t len); |
+ |
extern int target_read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len); |
+extern int target_read_code (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len); |
+ |
extern int target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, |
ssize_t len); |
@@ -1077,29 +1118,19 @@ int target_write_memory_blocks (VEC(memory_write_request_s) *requests, |
enum flash_preserve_mode preserve_flash_p, |
void (*progress_cb) (ULONGEST, void *)); |
-/* From infrun.c. */ |
- |
-extern int inferior_has_forked (ptid_t pid, ptid_t *child_pid); |
- |
-extern int inferior_has_vforked (ptid_t pid, ptid_t *child_pid); |
- |
-extern int inferior_has_execd (ptid_t pid, char **execd_pathname); |
- |
-extern int inferior_has_called_syscall (ptid_t pid, int *syscall_number); |
- |
/* Print a line about the current target. */ |
#define target_files_info() \ |
(*current_target.to_files_info) (¤t_target) |
/* Insert a breakpoint at address BP_TGT->placed_address in the target |
- machine. Result is 0 for success, or an errno value. */ |
+ machine. Result is 0 for success, non-zero for error. */ |
extern int target_insert_breakpoint (struct gdbarch *gdbarch, |
struct bp_target_info *bp_tgt); |
/* Remove a breakpoint at address BP_TGT->placed_address in the target |
- machine. Result is 0 for success, or an errno value. */ |
+ machine. Result is 0 for success, non-zero for error. */ |
extern int target_remove_breakpoint (struct gdbarch *gdbarch, |
struct bp_target_info *bp_tgt); |
@@ -1211,7 +1242,7 @@ void target_create_inferior (char *exec_file, char *args, |
This function returns 1 if the inferior should not be resumed |
(i.e. there is another event pending). */ |
-int target_follow_fork (int follow_child); |
+int target_follow_fork (int follow_child, int detach_fork); |
/* On some targets, we can catch an inferior exec event when it |
occurs. These functions insert/remove an already-created |
@@ -1703,6 +1734,9 @@ extern char *target_fileio_read_stralloc (const char *filename); |
#define target_set_circular_trace_buffer(val) \ |
(*current_target.to_set_circular_trace_buffer) (val) |
+#define target_set_trace_buffer_size(val) \ |
+ (*current_target.to_set_trace_buffer_size) (val) |
+ |
#define target_set_trace_notes(user,notes,stopnotes) \ |
(*current_target.to_set_trace_notes) ((user), (notes), (stopnotes)) |
@@ -1727,6 +1761,9 @@ extern char *target_fileio_read_stralloc (const char *filename); |
#define target_can_use_agent() \ |
(*current_target.to_can_use_agent) () |
+#define target_augmented_libraries_svr4_read() \ |
+ (*current_target.to_augmented_libraries_svr4_read) () |
+ |
/* Command logging facility. */ |
#define target_log_command(p) \ |
@@ -1748,6 +1785,9 @@ int target_verify_memory (const gdb_byte *data, |
/* Routines for maintenance of the target structures... |
+ complete_target_initialization: Finalize a target_ops by filling in |
+ any fields needed by the target implementation. |
+ |
add_target: Add a target to the list of all possible targets. |
push_target: Make this target the top of the stack of currently used |
@@ -1757,12 +1797,20 @@ int target_verify_memory (const gdb_byte *data, |
unpush_target: Remove this from the stack of currently used targets, |
no matter where it is on the list. Returns 0 if no |
- change, 1 if removed from stack. |
- |
- pop_target: Remove the top thing on the stack of current targets. */ |
+ change, 1 if removed from stack. */ |
extern void add_target (struct target_ops *); |
+extern void add_target_with_completer (struct target_ops *t, |
+ completer_ftype *completer); |
+ |
+extern void complete_target_initialization (struct target_ops *t); |
+ |
+/* Adds a command ALIAS for target T and marks it deprecated. This is useful |
+ for maintaining backwards compatibility when renaming targets. */ |
+ |
+extern void add_deprecated_target_alias (struct target_ops *t, char *alias); |
+ |
extern void push_target (struct target_ops *); |
extern int unpush_target (struct target_ops *); |
@@ -1771,18 +1819,12 @@ extern void target_pre_inferior (int); |
extern void target_preopen (int); |
-extern void pop_target (void); |
- |
-/* Does whatever cleanup is required to get rid of all pushed targets. |
- QUITTING is propagated to target_close; it indicates that GDB is |
- exiting and should not get hung on an error (otherwise it is |
- important to perform clean termination, even if it takes a |
- while). */ |
-extern void pop_all_targets (int quitting); |
+/* Does whatever cleanup is required to get rid of all pushed targets. */ |
+extern void pop_all_targets (void); |
/* Like pop_all_targets, but pops only targets whose stratum is |
strictly above ABOVE_STRATUM. */ |
-extern void pop_all_targets_above (enum strata above_stratum, int quitting); |
+extern void pop_all_targets_above (enum strata above_stratum); |
extern int target_is_pushed (struct target_ops *t); |
@@ -1800,7 +1842,12 @@ struct target_section |
struct bfd_section *the_bfd_section; |
- bfd *bfd; /* BFD file pointer */ |
+ /* The "owner" of the section. |
+ It can be any unique value. It is set by add_target_sections |
+ and used by remove_target_sections. |
+ For example, for executables it is a pointer to exec_bfd and |
+ for shlibs it is the so_list pointer. */ |
+ void *owner; |
}; |
/* Holds an array of target sections. Defined by [SECTIONS..SECTIONS_END[. */ |
@@ -1849,8 +1896,6 @@ extern void find_default_attach (struct target_ops *, char *, int); |
extern void find_default_create_inferior (struct target_ops *, |
char *, char *, char **, int); |
-extern struct target_ops *find_run_target (void); |
- |
extern struct target_ops *find_target_beneath (struct target_ops *); |
/* Read OS data object of type TYPE from the target, and return it in |
@@ -1894,4 +1939,65 @@ extern void update_target_permissions (void); |
/* Blank target vector entries are initialized to target_ignore. */ |
void target_ignore (void); |
+/* See to_supports_btrace in struct target_ops. */ |
+extern int target_supports_btrace (void); |
+ |
+/* See to_enable_btrace in struct target_ops. */ |
+extern struct btrace_target_info *target_enable_btrace (ptid_t ptid); |
+ |
+/* See to_disable_btrace in struct target_ops. */ |
+extern void target_disable_btrace (struct btrace_target_info *btinfo); |
+ |
+/* See to_teardown_btrace in struct target_ops. */ |
+extern void target_teardown_btrace (struct btrace_target_info *btinfo); |
+ |
+/* See to_read_btrace in struct target_ops. */ |
+extern VEC (btrace_block_s) *target_read_btrace (struct btrace_target_info *, |
+ enum btrace_read_type); |
+ |
+/* See to_stop_recording in struct target_ops. */ |
+extern void target_stop_recording (void); |
+ |
+/* See to_info_record in struct target_ops. */ |
+extern void target_info_record (void); |
+ |
+/* See to_save_record in struct target_ops. */ |
+extern void target_save_record (const char *filename); |
+ |
+/* Query if the target supports deleting the execution log. */ |
+extern int target_supports_delete_record (void); |
+ |
+/* See to_delete_record in struct target_ops. */ |
+extern void target_delete_record (void); |
+ |
+/* See to_record_is_replaying in struct target_ops. */ |
+extern int target_record_is_replaying (void); |
+ |
+/* See to_goto_record_begin in struct target_ops. */ |
+extern void target_goto_record_begin (void); |
+ |
+/* See to_goto_record_end in struct target_ops. */ |
+extern void target_goto_record_end (void); |
+ |
+/* See to_goto_record in struct target_ops. */ |
+extern void target_goto_record (ULONGEST insn); |
+ |
+/* See to_insn_history. */ |
+extern void target_insn_history (int size, int flags); |
+ |
+/* See to_insn_history_from. */ |
+extern void target_insn_history_from (ULONGEST from, int size, int flags); |
+ |
+/* See to_insn_history_range. */ |
+extern void target_insn_history_range (ULONGEST begin, ULONGEST end, int flags); |
+ |
+/* See to_call_history. */ |
+extern void target_call_history (int size, int flags); |
+ |
+/* See to_call_history_from. */ |
+extern void target_call_history_from (ULONGEST begin, int size, int flags); |
+ |
+/* See to_call_history_range. */ |
+extern void target_call_history_range (ULONGEST begin, ULONGEST end, int flags); |
+ |
#endif /* !defined (TARGET_H) */ |