return 1;
}
+static int
+delegate_remove_mask_watchpoint (struct target_ops *self, CORE_ADDR arg1, CORE_ADDR arg2, int arg3)
+{
+ self = self->beneath;
+ return self->to_remove_mask_watchpoint (self, arg1, arg2, arg3);
+}
+
+static int
+tdefault_remove_mask_watchpoint (struct target_ops *self, CORE_ADDR arg1, CORE_ADDR arg2, int arg3)
+{
+ return 1;
+}
+
static int
delegate_stopped_by_watchpoint (struct target_ops *self)
{
return 0;
}
+static int
+delegate_masked_watch_num_registers (struct target_ops *self, CORE_ADDR arg1, CORE_ADDR arg2)
+{
+ self = self->beneath;
+ return self->to_masked_watch_num_registers (self, arg1, arg2);
+}
+
+static int
+tdefault_masked_watch_num_registers (struct target_ops *self, CORE_ADDR arg1, CORE_ADDR arg2)
+{
+ return -1;
+}
+
static void
delegate_terminal_init (struct target_ops *self)
{
self->to_terminal_info (self, arg1, arg2);
}
+static void
+delegate_kill (struct target_ops *self)
+{
+ self = self->beneath;
+ self->to_kill (self);
+}
+
+static void
+tdefault_kill (struct target_ops *self)
+{
+ noprocess ();
+}
+
static void
delegate_load (struct target_ops *self, char *arg1, int arg2)
{
return 1;
}
+static int
+delegate_follow_fork (struct target_ops *self, int arg1, int arg2)
+{
+ self = self->beneath;
+ return self->to_follow_fork (self, arg1, arg2);
+}
+
static int
delegate_insert_exec_catchpoint (struct target_ops *self, int arg1)
{
return 0;
}
+static void
+delegate_mourn_inferior (struct target_ops *self)
+{
+ self = self->beneath;
+ self->to_mourn_inferior (self);
+}
+
+static void
+delegate_pass_signals (struct target_ops *self, int arg1, unsigned char *arg2)
+{
+ self = self->beneath;
+ self->to_pass_signals (self, arg1, arg2);
+}
+
+static void
+tdefault_pass_signals (struct target_ops *self, int arg1, unsigned char *arg2)
+{
+}
+
+static void
+delegate_program_signals (struct target_ops *self, int arg1, unsigned char *arg2)
+{
+ self = self->beneath;
+ self->to_program_signals (self, arg1, arg2);
+}
+
+static void
+tdefault_program_signals (struct target_ops *self, int arg1, unsigned char *arg2)
+{
+}
+
+static void
+delegate_find_new_threads (struct target_ops *self)
+{
+ self = self->beneath;
+ self->to_find_new_threads (self);
+}
+
+static void
+tdefault_find_new_threads (struct target_ops *self)
+{
+}
+
static char *
delegate_extra_thread_info (struct target_ops *self, struct thread_info *arg1)
{
ops->to_insert_watchpoint = delegate_insert_watchpoint;
if (ops->to_insert_mask_watchpoint == NULL)
ops->to_insert_mask_watchpoint = delegate_insert_mask_watchpoint;
+ if (ops->to_remove_mask_watchpoint == NULL)
+ ops->to_remove_mask_watchpoint = delegate_remove_mask_watchpoint;
if (ops->to_stopped_by_watchpoint == NULL)
ops->to_stopped_by_watchpoint = delegate_stopped_by_watchpoint;
if (ops->to_stopped_data_address == NULL)
ops->to_region_ok_for_hw_watchpoint = delegate_region_ok_for_hw_watchpoint;
if (ops->to_can_accel_watchpoint_condition == NULL)
ops->to_can_accel_watchpoint_condition = delegate_can_accel_watchpoint_condition;
+ if (ops->to_masked_watch_num_registers == NULL)
+ ops->to_masked_watch_num_registers = delegate_masked_watch_num_registers;
if (ops->to_terminal_init == NULL)
ops->to_terminal_init = delegate_terminal_init;
if (ops->to_terminal_inferior == NULL)
ops->to_terminal_save_ours = delegate_terminal_save_ours;
if (ops->to_terminal_info == NULL)
ops->to_terminal_info = delegate_terminal_info;
+ if (ops->to_kill == NULL)
+ ops->to_kill = delegate_kill;
if (ops->to_load == NULL)
ops->to_load = delegate_load;
if (ops->to_post_startup_inferior == NULL)
ops->to_insert_vfork_catchpoint = delegate_insert_vfork_catchpoint;
if (ops->to_remove_vfork_catchpoint == NULL)
ops->to_remove_vfork_catchpoint = delegate_remove_vfork_catchpoint;
+ if (ops->to_follow_fork == NULL)
+ ops->to_follow_fork = delegate_follow_fork;
if (ops->to_insert_exec_catchpoint == NULL)
ops->to_insert_exec_catchpoint = delegate_insert_exec_catchpoint;
if (ops->to_remove_exec_catchpoint == NULL)
ops->to_set_syscall_catchpoint = delegate_set_syscall_catchpoint;
if (ops->to_has_exited == NULL)
ops->to_has_exited = delegate_has_exited;
+ if (ops->to_mourn_inferior == NULL)
+ ops->to_mourn_inferior = delegate_mourn_inferior;
+ if (ops->to_pass_signals == NULL)
+ ops->to_pass_signals = delegate_pass_signals;
+ if (ops->to_program_signals == NULL)
+ ops->to_program_signals = delegate_program_signals;
+ if (ops->to_find_new_threads == NULL)
+ ops->to_find_new_threads = delegate_find_new_threads;
if (ops->to_extra_thread_info == NULL)
ops->to_extra_thread_info = delegate_extra_thread_info;
if (ops->to_thread_name == NULL)
ops->to_remove_watchpoint = tdefault_remove_watchpoint;
ops->to_insert_watchpoint = tdefault_insert_watchpoint;
ops->to_insert_mask_watchpoint = tdefault_insert_mask_watchpoint;
+ ops->to_remove_mask_watchpoint = tdefault_remove_mask_watchpoint;
ops->to_stopped_by_watchpoint = tdefault_stopped_by_watchpoint;
ops->to_stopped_data_address = tdefault_stopped_data_address;
ops->to_watchpoint_addr_within_range = default_watchpoint_addr_within_range;
ops->to_region_ok_for_hw_watchpoint = default_region_ok_for_hw_watchpoint;
ops->to_can_accel_watchpoint_condition = tdefault_can_accel_watchpoint_condition;
+ ops->to_masked_watch_num_registers = tdefault_masked_watch_num_registers;
ops->to_terminal_init = tdefault_terminal_init;
ops->to_terminal_inferior = tdefault_terminal_inferior;
ops->to_terminal_ours_for_output = tdefault_terminal_ours_for_output;
ops->to_terminal_ours = tdefault_terminal_ours;
ops->to_terminal_save_ours = tdefault_terminal_save_ours;
ops->to_terminal_info = default_terminal_info;
+ ops->to_kill = tdefault_kill;
ops->to_load = tdefault_load;
ops->to_post_startup_inferior = tdefault_post_startup_inferior;
ops->to_insert_fork_catchpoint = tdefault_insert_fork_catchpoint;
ops->to_remove_fork_catchpoint = tdefault_remove_fork_catchpoint;
ops->to_insert_vfork_catchpoint = tdefault_insert_vfork_catchpoint;
ops->to_remove_vfork_catchpoint = tdefault_remove_vfork_catchpoint;
+ ops->to_follow_fork = default_follow_fork;
ops->to_insert_exec_catchpoint = tdefault_insert_exec_catchpoint;
ops->to_remove_exec_catchpoint = tdefault_remove_exec_catchpoint;
ops->to_set_syscall_catchpoint = tdefault_set_syscall_catchpoint;
ops->to_has_exited = tdefault_has_exited;
+ ops->to_mourn_inferior = default_mourn_inferior;
+ ops->to_pass_signals = tdefault_pass_signals;
+ ops->to_program_signals = tdefault_program_signals;
+ ops->to_find_new_threads = tdefault_find_new_threads;
ops->to_extra_thread_info = tdefault_extra_thread_info;
ops->to_thread_name = tdefault_thread_name;
ops->to_stop = tdefault_stop;