diff options
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/target-delegates.c | 16 | ||||
-rw-r--r-- | gdb/target.c | 8 | ||||
-rw-r--r-- | gdb/target.h | 3 |
4 files changed, 27 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 39b6491..6ced320 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,6 +1,14 @@ 2014-02-19 Tom Tromey <tromey@redhat.com> * target-delegates.c: Rebuild. + * target.c (target_record_is_replaying): Unconditionally + delegate. + * target.h (struct target_ops) <to_record_is_replaying>: Use + TARGET_DEFAULT_RETURN. + +2014-02-19 Tom Tromey <tromey@redhat.com> + + * target-delegates.c: Rebuild. * target.c (target_goto_record_begin): Unconditionally delegate. * target.h (struct target_ops) <to_goto_record_begin>: Use TARGET_DEFAULT_NORETURN. diff --git a/gdb/target-delegates.c b/gdb/target-delegates.c index f7454fd..b0f7576 100644 --- a/gdb/target-delegates.c +++ b/gdb/target-delegates.c @@ -1260,6 +1260,19 @@ tdefault_supports_btrace (struct target_ops *self) return 0; } +static int +delegate_record_is_replaying (struct target_ops *self) +{ + self = self->beneath; + return self->to_record_is_replaying (self); +} + +static int +tdefault_record_is_replaying (struct target_ops *self) +{ + return 0; +} + static void delegate_goto_record_begin (struct target_ops *self) { @@ -1605,6 +1618,8 @@ install_delegators (struct target_ops *ops) ops->to_can_use_agent = delegate_can_use_agent; if (ops->to_supports_btrace == NULL) ops->to_supports_btrace = delegate_supports_btrace; + if (ops->to_record_is_replaying == NULL) + ops->to_record_is_replaying = delegate_record_is_replaying; if (ops->to_goto_record_begin == NULL) ops->to_goto_record_begin = delegate_goto_record_begin; if (ops->to_goto_record_end == NULL) @@ -1736,6 +1751,7 @@ install_dummy_methods (struct target_ops *ops) ops->to_use_agent = tdefault_use_agent; ops->to_can_use_agent = tdefault_can_use_agent; ops->to_supports_btrace = tdefault_supports_btrace; + ops->to_record_is_replaying = tdefault_record_is_replaying; ops->to_goto_record_begin = tdefault_goto_record_begin; ops->to_goto_record_end = tdefault_goto_record_end; ops->to_goto_record = tdefault_goto_record; diff --git a/gdb/target.c b/gdb/target.c index 1c7b534..c60c85c 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -3947,13 +3947,7 @@ target_delete_record (void) int target_record_is_replaying (void) { - struct target_ops *t; - - for (t = current_target.beneath; t != NULL; t = t->beneath) - if (t->to_record_is_replaying != NULL) - return t->to_record_is_replaying (t); - - return 0; + return current_target.to_record_is_replaying (¤t_target); } /* See target.h. */ diff --git a/gdb/target.h b/gdb/target.h index d90205c..dcac55d 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -1032,7 +1032,8 @@ struct target_ops void (*to_delete_record) (struct target_ops *); /* Query if the record target is currently replaying. */ - int (*to_record_is_replaying) (struct target_ops *); + int (*to_record_is_replaying) (struct target_ops *) + TARGET_DEFAULT_RETURN (0); /* Go to the begin of the execution trace. */ void (*to_goto_record_begin) (struct target_ops *) |