X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdbserver%2Fnto-low.cc;h=642fe9ffd21321564681a7095e5656c85835c116;hb=1aa98955b19676497f89112a0962f24f359ce761;hp=204d8066455e540f9bfec870529654af64b943c3;hpb=a2b2297a204898fa273a825d82385ce1b48941e3;p=deliverable%2Fbinutils-gdb.git diff --git a/gdbserver/nto-low.cc b/gdbserver/nto-low.cc index 204d806645..642fe9ffd2 100644 --- a/gdbserver/nto-low.cc +++ b/gdbserver/nto-low.cc @@ -807,9 +807,9 @@ nto_process_target::supports_z_point_type (char z_type) /* Insert {break/watch}point at address ADDR. SIZE is not used. */ -static int -nto_insert_point (enum raw_bkpt_type type, CORE_ADDR addr, - int size, struct raw_breakpoint *bp) +int +nto_process_target::insert_point (enum raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) { int wtype = _DEBUG_BREAK_HW; /* Always request HW. */ @@ -839,9 +839,9 @@ nto_insert_point (enum raw_bkpt_type type, CORE_ADDR addr, /* Remove {break/watch}point at address ADDR. SIZE is not used. */ -static int -nto_remove_point (enum raw_bkpt_type type, CORE_ADDR addr, - int size, struct raw_breakpoint *bp) +int +nto_process_target::remove_point (enum raw_bkpt_type type, CORE_ADDR addr, + int size, raw_breakpoint *bp) { int wtype = _DEBUG_BREAK_HW; /* Always request HW. */ @@ -869,15 +869,21 @@ nto_remove_point (enum raw_bkpt_type type, CORE_ADDR addr, return nto_breakpoint (addr, wtype, -1); } +bool +nto_process_target::supports_hardware_single_step () +{ + return true; +} + /* Check if the reason of stop for current thread (CURRENT_INFERIOR) is a watchpoint. - Return 1 if stopped by watchpoint, 0 otherwise. */ + Return true if stopped by watchpoint, false otherwise. */ -static int -nto_stopped_by_watchpoint (void) +bool +nto_process_target::stopped_by_watchpoint () { - int ret = 0; + bool ret = false; TRACE ("%s\n", __func__); if (nto_inferior.ctl_fd != -1 && current_thread != NULL) @@ -893,7 +899,7 @@ nto_stopped_by_watchpoint (void) err = devctl (nto_inferior.ctl_fd, DCMD_PROC_STATUS, &status, sizeof (status), 0); if (err == EOK && (status.flags & watchmask)) - ret = 1; + ret = true; } } TRACE ("%s: %s\n", __func__, ret ? "yes" : "no"); @@ -904,8 +910,8 @@ nto_stopped_by_watchpoint (void) Return inferior's instruction pointer value, or 0 on error. */ -static CORE_ADDR -nto_stopped_data_address (void) +CORE_ADDR +nto_process_target::stopped_data_address () { CORE_ADDR ret = (CORE_ADDR)0; @@ -927,19 +933,10 @@ nto_stopped_data_address (void) return ret; } -/* We do not currently support non-stop. */ - -static int -nto_supports_non_stop (void) -{ - TRACE ("%s\n", __func__); - return 0; -} - /* Implementation of the target_ops method "sw_breakpoint_from_kind". */ -static const gdb_byte * -nto_sw_breakpoint_from_kind (int kind, int *size) +const gdb_byte * +nto_process_target::sw_breakpoint_from_kind (int kind, int *size) { *size = the_low_target.breakpoint_len; return the_low_target.breakpoint; @@ -949,68 +946,6 @@ nto_sw_breakpoint_from_kind (int kind, int *size) static nto_process_target the_nto_target; -static process_stratum_target nto_target_ops = { - nto_insert_point, - nto_remove_point, - NULL, /* stopped_by_sw_breakpoint */ - NULL, /* supports_stopped_by_sw_breakpoint */ - NULL, /* stopped_by_hw_breakpoint */ - NULL, /* supports_stopped_by_hw_breakpoint */ - target_can_do_hardware_single_step, - nto_stopped_by_watchpoint, - nto_stopped_data_address, - NULL, /* nto_read_offsets */ - NULL, /* thread_db_set_tls_address */ - hostio_last_error_from_errno, - NULL, /* nto_qxfer_osdata */ - NULL, /* xfer_siginfo */ - nto_supports_non_stop, - NULL, /* async */ - NULL, /* start_non_stop */ - NULL, /* supports_multi_process */ - NULL, /* supports_fork_events */ - NULL, /* supports_vfork_events */ - NULL, /* supports_exec_events */ - NULL, /* handle_new_gdb_connection */ - NULL, /* handle_monitor_command */ - NULL, /* core_of_thread */ - NULL, /* read_loadmap */ - NULL, /* process_qsupported */ - NULL, /* supports_tracepoints */ - NULL, /* read_pc */ - NULL, /* write_pc */ - NULL, /* thread_stopped */ - NULL, /* get_tib_address */ - NULL, /* pause_all */ - NULL, /* unpause_all */ - NULL, /* stabilize_threads */ - NULL, /* install_fast_tracepoint_jump_pad */ - NULL, /* emit_ops */ - NULL, /* supports_disable_randomization */ - NULL, /* get_min_fast_tracepoint_insn_len */ - NULL, /* qxfer_libraries_svr4 */ - NULL, /* support_agent */ - NULL, /* enable_btrace */ - NULL, /* disable_btrace */ - NULL, /* read_btrace */ - NULL, /* read_btrace_conf */ - NULL, /* supports_range_stepping */ - NULL, /* pid_to_exec_file */ - NULL, /* multifs_open */ - NULL, /* multifs_unlink */ - NULL, /* multifs_readlink */ - NULL, /* breakpoint_kind_from_pc */ - nto_sw_breakpoint_from_kind, - NULL, /* thread_name */ - NULL, /* breakpoint_kind_from_current_state */ - NULL, /* supports_software_single_step */ - NULL, /* supports_catch_syscall */ - NULL, /* get_ipa_tdesc_idx */ - NULL, /* thread_handle */ - &the_nto_target, -}; - - /* Global function called by server.c. Initializes QNX Neutrino gdbserver. */ @@ -1020,7 +955,7 @@ initialize_low (void) sigset_t set; TRACE ("%s\n", __func__); - set_target_ops (&nto_target_ops); + set_target_ops (&the_nto_target); /* We use SIGUSR1 to gain control after we block waiting for a process. We use sigwaitevent to wait. */