X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdbserver%2Flynx-low.cc;h=a8e4e6079bd0717d46cd390d450d35888002654b;hb=refs%2Fheads%2Fconcurrent-displaced-stepping-2020-04-01;hp=9fc41e4ce99a67013766719095604430890dd316;hpb=0e4d7e35fbd551e61cf72adae4806aa8c5230a1a;p=deliverable%2Fbinutils-gdb.git diff --git a/gdbserver/lynx-low.cc b/gdbserver/lynx-low.cc index 9fc41e4ce9..a8e4e6079b 100644 --- a/gdbserver/lynx-low.cc +++ b/gdbserver/lynx-low.cc @@ -253,7 +253,7 @@ lynx_process_target::create_inferior (const char *program, const std::vector &program_args) { int pid; - std::string str_program_args = stringify_argv (program_args); + std::string str_program_args = construct_inferior_arguments (program_args); lynx_debug ("create_inferior ()"); @@ -505,12 +505,13 @@ retry: /* A wrapper around lynx_wait_1 that also prints debug traces when such debug traces have been activated. */ -static ptid_t -lynx_wait (ptid_t ptid, struct target_waitstatus *status, int options) +ptid_t +lynx_process_target::wait (ptid_t ptid, target_waitstatus *status, + int options) { ptid_t new_ptid; - lynx_debug ("lynx_wait (pid = %d, tid = %ld)", + lynx_debug ("wait (pid = %d, tid = %ld)", lynx_ptid_get_pid (ptid), lynx_ptid_get_tid (ptid)); new_ptid = lynx_wait_1 (ptid, status, options); lynx_debug (" -> (pid=%d, tid=%ld, status->kind = %d)", @@ -580,13 +581,13 @@ lynx_process_target::thread_alive (ptid_t ptid) /* Implement the fetch_registers target_ops method. */ -static void -lynx_fetch_registers (struct regcache *regcache, int regno) +void +lynx_process_target::fetch_registers (regcache *regcache, int regno) { struct lynx_regset_info *regset = lynx_target_regsets; ptid_t inferior_ptid = ptid_of (current_thread); - lynx_debug ("lynx_fetch_registers (regno = %d)", regno); + lynx_debug ("fetch_registers (regno = %d)", regno); while (regset->size >= 0) { @@ -605,13 +606,13 @@ lynx_fetch_registers (struct regcache *regcache, int regno) /* Implement the store_registers target_ops method. */ -static void -lynx_store_registers (struct regcache *regcache, int regno) +void +lynx_process_target::store_registers (regcache *regcache, int regno) { struct lynx_regset_info *regset = lynx_target_regsets; ptid_t inferior_ptid = ptid_of (current_thread); - lynx_debug ("lynx_store_registers (regno = %d)", regno); + lynx_debug ("store_registers (regno = %d)", regno); while (regset->size >= 0) { @@ -637,8 +638,9 @@ lynx_store_registers (struct regcache *regcache, int regno) /* Implement the read_memory target_ops method. */ -static int -lynx_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len) +int +lynx_process_target::read_memory (CORE_ADDR memaddr, unsigned char *myaddr, + int len) { /* On LynxOS, memory reads needs to be performed in chunks the size of int types, and they should also be aligned accordingly. */ @@ -670,8 +672,9 @@ lynx_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len) /* Implement the write_memory target_ops method. */ -static int -lynx_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len) +int +lynx_process_target::write_memory (CORE_ADDR memaddr, + const unsigned char *myaddr, int len) { /* On LynxOS, memory writes needs to be performed in chunks the size of int types, and they should also be aligned accordingly. */ @@ -693,7 +696,7 @@ lynx_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len) { /* We need to read the memory at this address in order to preserve the data that we are not overwriting. */ - lynx_read_memory (addr, (unsigned char *) &buf, xfer_size); + read_memory (addr, (unsigned char *) &buf, xfer_size); if (errno) return errno; } @@ -711,96 +714,34 @@ lynx_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len) /* Implement the kill_request target_ops method. */ -static void -lynx_request_interrupt (void) +void +lynx_process_target::request_interrupt () { ptid_t inferior_ptid = ptid_of (get_first_thread ()); kill (lynx_ptid_get_pid (inferior_ptid), SIGINT); } +bool +lynx_process_target::supports_hardware_single_step () +{ + return true; +} + +const gdb_byte * +lynx_process_target::sw_breakpoint_from_kind (int kind, int *size) +{ + error (_("Target does not implement the sw_breakpoint_from_kind op")); +} + /* The LynxOS target ops object. */ static lynx_process_target the_lynx_target; -/* The LynxOS target_ops vector. */ - -static process_stratum_target lynx_target_ops = { - lynx_wait, - lynx_fetch_registers, - lynx_store_registers, - NULL, /* prepare_to_access_memory */ - NULL, /* done_accessing_memory */ - lynx_read_memory, - lynx_write_memory, - NULL, /* look_up_symbols */ - lynx_request_interrupt, - NULL, /* read_auxv */ - NULL, /* supports_z_point_type */ - NULL, /* insert_point */ - NULL, /* 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, - NULL, /* stopped_by_watchpoint */ - NULL, /* stopped_data_address */ - NULL, /* read_offsets */ - NULL, /* get_tls_address */ - NULL, /* hostio_last_error */ - NULL, /* qxfer_osdata */ - NULL, /* qxfer_siginfo */ - NULL, /* 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 */ - NULL, /* 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_lynx_target, -}; - void initialize_low (void) { - set_target_ops (&lynx_target_ops); + set_target_ops (&the_lynx_target); the_low_target.arch_setup (); }