+2014-02-19 Tom Tromey <tromey@redhat.com>
+
+ * record-btrace.c (record_btrace_decr_pc_after_break): Delegate
+ directly.
+ * target-delegates.c: Rebuild.
+ * target.h (struct target_ops) <to_decr_pc_after_break>: Use
+ TARGET_DEFAULT_FUNC.
+ * target.c (default_target_decr_pc_after_break): Rename from
+ forward_target_decr_pc_after_break. Simplify.
+ (target_decr_pc_after_break): Rely on delegation.
+
2014-02-19 Tom Tromey <tromey@redhat.com>
* target.c (update_current_target): Do not INHERIT to_doc or
if (record_btrace_is_replaying (ops))
return 0;
- return forward_target_decr_pc_after_break (ops->beneath, gdbarch);
+ return ops->beneath->to_decr_pc_after_break (ops->beneath, gdbarch);
}
/* The to_find_new_threads method of target record-btrace. */
return 0;
}
+static CORE_ADDR
+delegate_decr_pc_after_break (struct target_ops *self, struct gdbarch *arg1)
+{
+ self = self->beneath;
+ return self->to_decr_pc_after_break (self, arg1);
+}
+
static void
install_delegators (struct target_ops *ops)
{
ops->to_call_history_range = delegate_call_history_range;
if (ops->to_augmented_libraries_svr4_read == NULL)
ops->to_augmented_libraries_svr4_read = delegate_augmented_libraries_svr4_read;
+ if (ops->to_decr_pc_after_break == NULL)
+ ops->to_decr_pc_after_break = delegate_decr_pc_after_break;
}
static void
ops->to_call_history_from = tdefault_call_history_from;
ops->to_call_history_range = tdefault_call_history_range;
ops->to_augmented_libraries_svr4_read = tdefault_augmented_libraries_svr4_read;
+ ops->to_decr_pc_after_break = default_target_decr_pc_after_break;
}
static enum exec_direction_kind default_execution_direction
(struct target_ops *self);
+static CORE_ADDR default_target_decr_pc_after_break (struct target_ops *ops,
+ struct gdbarch *gdbarch);
+
#include "target-delegates.c"
static void init_dummy_target (void);
return NULL;
}
-/* See target.h. */
+/* Default implementation of to_decr_pc_after_break. */
-CORE_ADDR
-forward_target_decr_pc_after_break (struct target_ops *ops,
+static CORE_ADDR
+default_target_decr_pc_after_break (struct target_ops *ops,
struct gdbarch *gdbarch)
{
- for (; ops != NULL; ops = ops->beneath)
- if (ops->to_decr_pc_after_break != NULL)
- return ops->to_decr_pc_after_break (ops, gdbarch);
-
return gdbarch_decr_pc_after_break (gdbarch);
}
CORE_ADDR
target_decr_pc_after_break (struct gdbarch *gdbarch)
{
- return forward_target_decr_pc_after_break (current_target.beneath, gdbarch);
+ return current_target.to_decr_pc_after_break (¤t_target, gdbarch);
}
static int
after executing a breakpoint instruction.
Defaults to gdbarch_decr_pc_after_break (GDBARCH). */
CORE_ADDR (*to_decr_pc_after_break) (struct target_ops *ops,
- struct gdbarch *gdbarch);
+ struct gdbarch *gdbarch)
+ TARGET_DEFAULT_FUNC (default_target_decr_pc_after_break);
int to_magic;
/* Need sub-structure for target machine related rather than comm related?