gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gdbserver / lynx-low.cc
index 9fc41e4ce99a67013766719095604430890dd316..a8e4e6079bd0717d46cd390d450d35888002654b 100644 (file)
@@ -253,7 +253,7 @@ lynx_process_target::create_inferior (const char *program,
                                      const std::vector<char *> &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 ();
 }
 
This page took 0.040523 seconds and 4 git commands to generate.