aboutsummaryrefslogtreecommitdiff
path: root/gdb/remote.c
diff options
context:
space:
mode:
authorJohn Metzler <jmetzler@cygnus>1998-05-21 20:20:39 +0000
committerJohn Metzler <jmetzler@cygnus>1998-05-21 20:20:39 +0000
commitc719b71428c79aa3f92dbb59d67df6d4bda139c3 (patch)
tree7a0f22aaaaa024bbbbc5fd724c0fa97df269be44 /gdb/remote.c
parent5e34097b8b81e3d25e1a4b9b3d16ddd54fafb26c (diff)
downloadgdb-c719b71428c79aa3f92dbb59d67df6d4bda139c3.zip
gdb-c719b71428c79aa3f92dbb59d67df6d4bda139c3.tar.gz
gdb-c719b71428c79aa3f92dbb59d67df6d4bda139c3.tar.bz2
Thu May 21 13:14:25 1998 John Metzler <jmetzler@cygnus.com>
* gnu-nat.c (init_gnu_ops): Initialization of target ops by assignment. (_initialize_gnu_nat): Call new init * mac-nat.c (init_child_ops): Ditto (_initialize_mac_nat): Ditto * monitor.c (init_base_monitor_ops): Ditto (_initialize_remote_monitors) : Ditto * ppc-bdm.c (init_bdm_ppc_ops): Ditto (_initialize_bdm_ppc): Ditto * remote-adapt.c ( init_adapt_ops): Ditto (_initialize_remote_adapt): Ditto * remote-array.c (init_array_ops) : Ditto (_initialize_array): Ditto * remote-bug (init_bug_ops) : Ditto (_initialize_remote_bug): Ditto * remote-e7000.c (init_e7000_ops): Ditto (_initialize_remote_e7000) : Ditto * remote-eb.c (init_eb_ops) : Ditto (_initialize_remote_eb) : Ditto *remote-es.c (init_es1800_ops) : Ditto (init_es1800_child_ops) : Ditto (_initialize_es1800) ; Ditto *remote-hms.c (init_hms_ops): Ditto (_initialize_remote_hms) : Ditto * remote-mm.c (init_mm_ops): Ditto (_initialize_remote_mm) : Ditto * remote-nindy.c (init_nindy_ops): Ditto (_initialize_nindy): Ditto * remote_nrom.c (init_nrom_ops) : Ditto (_initialize_remote_nrom) : Ditto *remote-os9k (init_rombug_ops) : Ditto (_initialize_remote_os9k) : Ditto *remote-rdi.c (init_rdi_ops) : Ditto (_initialize_remote_rdi) : Ditto * remote-rdp.c (init_remote_rdp_ops) : Ditto (_initialize_remote_rdp) : Ditto * remote-sds.c (init_sds_ops) : Ditto (_initialize_remote_sds) : Ditto * remote-sim.c (init_gdbsim_ops) : Ditto (_initialize_remote_sim) : Ditto * remote-st.c (init_st2000_ops): Ditto (_initialize_remote_st2000): Ditto *remote-udi.c (init_udi_ops) : Ditto (_initialize_remote_udi) : Ditto * remote-vx.c (init_vx_ops) : Ditto (init_vx_run_ops) : Ditto (_initialize_vx) : Ditto * remote.c (init_remote_ops): Ditto (init_extended_remote_ops): Ditto (_initialize_remote): Ditto * sparcl-tdep.c (init_sparclite_ops): Ditto (_initialize_sparcl_tdep): Ditto * v850ice.c (init_850ice_ops): Ditto (_initialize_v850ice): Ditto *win32-nat.c: (init_child_ops): Ditto (_initialize_inftarg): Ditto
Diffstat (limited to 'gdb/remote.c')
-rw-r--r--gdb/remote.c206
1 files changed, 109 insertions, 97 deletions
diff --git a/gdb/remote.c b/gdb/remote.c
index c1d8ec1..8f94e16 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -275,15 +275,108 @@ static int remote_remove_breakpoint PARAMS ((CORE_ADDR, char *));
static int hexnumlen PARAMS ((ULONGEST num));
-static struct target_ops remote_ops; /* Forward decl */
-static struct target_ops extended_remote_ops; /* Forward decl */
-
/* exported functions */
extern int fromhex PARAMS ((int a));
extern void getpkt PARAMS ((char *buf, int forever));
extern int putpkt PARAMS ((char *buf));
+/* Define the target subroutine names */
+
+static struct target_ops remote_ops ;
+
+static void init_remote_ops(void)
+{
+ remote_ops.to_shortname = "remote";
+ remote_ops.to_longname = "Remote serial target in gdb-specific protocol";
+ remote_ops.to_doc = "Use a remote computer via a serial line; using a gdb-specific protocol.\n\
+Specify the serial device it is connected to (e.g. /dev/ttya)." ;
+ remote_ops.to_open = remote_open;
+ remote_ops.to_close = remote_close;
+ remote_ops.to_attach = NULL;
+ remote_ops.to_detach = remote_detach;
+ remote_ops.to_resume = remote_resume;
+ remote_ops.to_wait = remote_wait;
+ remote_ops.to_fetch_registers = remote_fetch_registers;
+ remote_ops.to_store_registers = remote_store_registers;
+ remote_ops.to_prepare_to_store = remote_prepare_to_store;
+ remote_ops.to_xfer_memory = remote_xfer_memory;
+ remote_ops.to_files_info = remote_files_info;
+ remote_ops.to_insert_breakpoint = remote_insert_breakpoint;
+ remote_ops.to_remove_breakpoint = remote_remove_breakpoint;
+ remote_ops.to_terminal_init = NULL;
+ remote_ops.to_terminal_inferior = NULL;
+ remote_ops.to_terminal_ours_for_output = NULL;
+ remote_ops.to_terminal_ours = NULL;
+ remote_ops.to_terminal_info = NULL;
+ remote_ops.to_kill = remote_kill;
+ remote_ops.to_load = generic_load;
+ remote_ops.to_lookup_symbol = NULL;
+ remote_ops.to_create_inferior = NULL;
+ remote_ops.to_mourn_inferior = remote_mourn;
+ remote_ops.to_can_run = 0;
+ remote_ops.to_notice_signals = 0;
+ remote_ops.to_thread_alive = remote_thread_alive;
+ remote_ops.to_stop = 0;
+ remote_ops.to_stratum = process_stratum;
+ remote_ops.DONT_USE = NULL;
+ remote_ops.to_has_all_memory = 1;
+ remote_ops.to_has_memory = 1;
+ remote_ops.to_has_stack = 1;
+ remote_ops.to_has_registers = 1;
+ remote_ops.to_has_execution = 1;
+ remote_ops.to_sections = NULL;
+ remote_ops.to_sections_end = NULL;
+ remote_ops.to_magic = OPS_MAGIC ;
+} /* init_remote_ops */
+
+static struct target_ops extended_remote_ops ;
+
+static void init_extended_remote_ops(void)
+{
+ extended_remote_ops.to_shortname = "extended-remote";
+ extended_remote_ops.to_longname = "Extended remote serial target in gdb-specific protocol";
+ extended_remote_ops.to_doc = "Use a remote computer via a serial line; using a gdb-specific protocol.\n\
+Specify the serial device it is connected to (e.g. /dev/ttya).",
+ extended_remote_ops.to_open = extended_remote_open;
+ extended_remote_ops.to_close = remote_close;
+ extended_remote_ops.to_attach = NULL;
+ extended_remote_ops.to_detach = remote_detach;
+ extended_remote_ops.to_resume = remote_resume;
+ extended_remote_ops.to_wait = remote_wait;
+ extended_remote_ops.to_fetch_registers = remote_fetch_registers;
+ extended_remote_ops.to_store_registers = remote_store_registers;
+ extended_remote_ops.to_prepare_to_store = remote_prepare_to_store;
+ extended_remote_ops.to_xfer_memory = remote_xfer_memory;
+ extended_remote_ops.to_files_info = remote_files_info;
+ extended_remote_ops.to_insert_breakpoint = remote_insert_breakpoint;
+ extended_remote_ops.to_remove_breakpoint = remote_remove_breakpoint;
+ extended_remote_ops.to_terminal_init = NULL;
+ extended_remote_ops.to_terminal_inferior = NULL;
+ extended_remote_ops.to_terminal_ours_for_output = NULL;
+ extended_remote_ops.to_terminal_ours = NULL;
+ extended_remote_ops.to_terminal_info = NULL;
+ extended_remote_ops.to_kill = remote_kill;
+ extended_remote_ops.to_load = generic_load;
+ extended_remote_ops.to_lookup_symbol = NULL;
+ extended_remote_ops.to_create_inferior = extended_remote_create_inferior;
+ extended_remote_ops.to_mourn_inferior = extended_remote_mourn;
+ extended_remote_ops.to_can_run = 0;
+ extended_remote_ops.to_notice_signals = 0;
+ extended_remote_ops.to_thread_alive = remote_thread_alive;
+ extended_remote_ops.to_stop = 0;
+ extended_remote_ops.to_stratum = process_stratum;
+ extended_remote_ops.DONT_USE = NULL;
+ extended_remote_ops.to_has_all_memory = 1;
+ extended_remote_ops.to_has_memory = 1;
+ extended_remote_ops.to_has_stack = 1;
+ extended_remote_ops.to_has_registers = 1;
+ extended_remote_ops.to_has_execution = 1;
+ extended_remote_ops.to_sections = NULL;
+ extended_remote_ops.to_sections_end = NULL;
+ extended_remote_ops.to_magic = OPS_MAGIC ;
+}
+
/* This was 5 seconds, which is a long time to sit and wait.
Unless this is going though some terminal server or multiplexer or
@@ -1311,6 +1404,16 @@ remote_xfer_memory(memaddr, myaddr, len, should_write, target)
int should_write;
struct target_ops *target; /* ignored */
{
+#ifdef REMOTE_TRANSLATE_XFER_ADDRESS
+ CORE_ADDR targaddr;
+ int targlen;
+ REMOTE_TRANSLATE_XFER_ADDRESS (memaddr, len, targaddr, targlen);
+ if (targlen == 0)
+ return 0;
+ memaddr = targaddr;
+ len = targlen;
+#endif
+
return dcache_xfer_memory (remote_dcache, memaddr, myaddr, len, should_write);
}
@@ -1881,100 +1984,6 @@ remote_remove_breakpoint (addr, contents_cache)
return memory_remove_breakpoint (addr, contents_cache);
#endif /* REMOTE_BREAKPOINT */
}
-
-/* Define the target subroutine names */
-
-static struct target_ops remote_ops =
-{
- "remote", /* to_shortname */
- "Remote serial target in gdb-specific protocol", /* to_longname */
- "Use a remote computer via a serial line, using a gdb-specific protocol.\n\
-Specify the serial device it is connected to (e.g. /dev/ttya).", /* to_doc */
- remote_open, /* to_open */
- remote_close, /* to_close */
- NULL, /* to_attach */
- remote_detach, /* to_detach */
- remote_resume, /* to_resume */
- remote_wait, /* to_wait */
- remote_fetch_registers, /* to_fetch_registers */
- remote_store_registers, /* to_store_registers */
- remote_prepare_to_store, /* to_prepare_to_store */
- remote_xfer_memory, /* to_xfer_memory */
- remote_files_info, /* to_files_info */
- remote_insert_breakpoint, /* to_insert_breakpoint */
- remote_remove_breakpoint, /* to_remove_breakpoint */
- NULL, /* to_terminal_init */
- NULL, /* to_terminal_inferior */
- NULL, /* to_terminal_ours_for_output */
- NULL, /* to_terminal_ours */
- NULL, /* to_terminal_info */
- remote_kill, /* to_kill */
- generic_load, /* to_load */
- NULL, /* to_lookup_symbol */
- NULL, /* to_create_inferior */
- remote_mourn, /* to_mourn_inferior */
- 0, /* to_can_run */
- 0, /* to_notice_signals */
- remote_thread_alive, /* to_thread_alive */
- 0, /* to_stop */
- process_stratum, /* to_stratum */
- NULL, /* to_next */
- 1, /* to_has_all_memory */
- 1, /* to_has_memory */
- 1, /* to_has_stack */
- 1, /* to_has_registers */
- 1, /* to_has_execution */
- NULL, /* sections */
- NULL, /* sections_end */
- OPS_MAGIC /* to_magic */
-};
-
-static struct target_ops extended_remote_ops =
-{
- "extended-remote", /* to_shortname */
- "Extended remote serial target in gdb-specific protocol",/* to_longname */
- "Use a remote computer via a serial line, using a gdb-specific protocol.\n\
-Specify the serial device it is connected to (e.g. /dev/ttya).", /* to_doc */
- extended_remote_open, /* to_open */
- remote_close, /* to_close */
- NULL, /* to_attach */
- remote_detach, /* to_detach */
- remote_resume, /* to_resume */
- remote_wait, /* to_wait */
- remote_fetch_registers, /* to_fetch_registers */
- remote_store_registers, /* to_store_registers */
- remote_prepare_to_store, /* to_prepare_to_store */
- remote_xfer_memory, /* to_xfer_memory */
- remote_files_info, /* to_files_info */
-
- remote_insert_breakpoint, /* to_insert_breakpoint */
- remote_remove_breakpoint, /* to_remove_breakpoint */
-
- NULL, /* to_terminal_init */
- NULL, /* to_terminal_inferior */
- NULL, /* to_terminal_ours_for_output */
- NULL, /* to_terminal_ours */
- NULL, /* to_terminal_info */
- remote_kill, /* to_kill */
- generic_load, /* to_load */
- NULL, /* to_lookup_symbol */
- extended_remote_create_inferior,/* to_create_inferior */
- extended_remote_mourn, /* to_mourn_inferior */
- 0, /* to_can_run */
- 0, /* to_notice_signals */
- remote_thread_alive, /* to_thread_alive */
- 0, /* to_stop */
- process_stratum, /* to_stratum */
- NULL, /* to_next */
- 1, /* to_has_all_memory */
- 1, /* to_has_memory */
- 1, /* to_has_stack */
- 1, /* to_has_registers */
- 1, /* to_has_execution */
- NULL, /* sections */
- NULL, /* sections_end */
- OPS_MAGIC /* to_magic */
-};
/* Some targets are only capable of doing downloads, and afterwards they switch
to the remote serial protocol. This function provides a clean way to get
@@ -2011,9 +2020,12 @@ open_remote_target (name, from_tty, target, extended_p)
remote_open_1 (name, from_tty, target, extended_p);
}
+
void
_initialize_remote ()
{
+ init_remote_ops() ;
+ init_extended__remote_ops() ;
add_target (&remote_ops);
add_target (&extended_remote_ops);