aboutsummaryrefslogtreecommitdiff
path: root/gdb/target.h
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@vmware.com>2008-06-10 00:13:15 +0000
committerMichael Snyder <msnyder@vmware.com>2008-06-10 00:13:15 +0000
commitda33b5bf66650ddadd113bbe6eeed1ed5da37b25 (patch)
tree26ee102218c4a0e9ac6464509bdd8f4a2ec11c41 /gdb/target.h
parent7a77c2d31f4ba76492b1d1ecb88fcd4a0387bbc5 (diff)
downloadbinutils-drow-reverse-20070409-branch.zip
binutils-drow-reverse-20070409-branch.tar.gz
binutils-drow-reverse-20070409-branch.tar.bz2
Daniel Jacobowitz' update to Michael Snyder's reverse debugging patchesdrow-reverse-20070409-branch
Diffstat (limited to 'gdb/target.h')
-rw-r--r--gdb/target.h33
1 files changed, 32 insertions, 1 deletions
diff --git a/gdb/target.h b/gdb/target.h
index d9f1ca1..454193e 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -131,7 +131,11 @@ enum target_waitkind
inferior, rather than being stuck in the remote_async_wait()
function. This way the event loop is responsive to other events,
like for instance the user typing. */
- TARGET_WAITKIND_IGNORE
+ TARGET_WAITKIND_IGNORE,
+
+ /* The target has run out of history information,
+ and cannot run backward any further. */
+ TARGET_WAITKIND_NO_HISTORY
};
struct target_waitstatus
@@ -150,6 +154,14 @@ struct target_waitstatus
value;
};
+/* Reverse execution. */
+enum exec_direction_kind
+ {
+ EXEC_FORWARD,
+ EXEC_REVERSE,
+ EXEC_ERROR
+ };
+
/* Possible types of events that the inferior handler will have to
deal with. */
enum inferior_event_type
@@ -500,6 +512,13 @@ struct target_ops
was available. */
const struct target_desc *(*to_read_description) (struct target_ops *ops);
+ /* Set execution direction (forward/reverse). */
+ int (*to_set_execdir) (enum exec_direction_kind);
+ /* Get execution direction (forward/reverse). */
+ enum exec_direction_kind (*to_get_execdir) (void);
+
+ void (*to_doing_call) (int starting);
+
int to_magic;
/* Need sub-structure for target machine related rather than comm related?
*/
@@ -1194,6 +1213,18 @@ extern int target_stopped_data_address_p (struct target_ops *);
#define target_stopped_data_address_p(CURRENT_TARGET) (1)
#endif
+/* Forward/reverse execution direction.
+ These will only be implemented by a target that supports reverse execution.
+*/
+#define target_get_execution_direction() \
+ (current_target.to_get_execdir ? \
+ (*current_target.to_get_execdir) () : EXEC_ERROR)
+
+#define target_set_execution_direction(DIR) \
+ (current_target.to_set_execdir ? \
+ (*current_target.to_set_execdir) (DIR) : EXEC_ERROR)
+
+
extern const struct target_desc *target_read_description (struct target_ops *);
/* Routines for maintenance of the target structures...