X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fremote-mips.c;h=1144e8d825edbc0a28f307eb8fa0f8da60c62991;hb=3d00d119d389c59cf9223d0b74d1d0bce0d18511;hp=a1df0eb94e9d3ef9ce06eeb434313b9d6214a2da;hpb=0f7d239c5ad7daea45f8b300b5308f90b76647a7;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/remote-mips.c b/gdb/remote-mips.c index a1df0eb94e..1144e8d825 100644 --- a/gdb/remote-mips.c +++ b/gdb/remote-mips.c @@ -1,7 +1,7 @@ /* Remote debugging interface for MIPS remote debugging protocol. - Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002 Free Software Foundation, Inc. + Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, + 2002, 2003, 2004, 2006 Free Software Foundation, Inc. Contributed by Cygnus Support. Written by Ian Lance Taylor . @@ -20,8 +20,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include "defs.h" #include "inferior.h" @@ -31,11 +31,13 @@ #include "gdbcore.h" #include "serial.h" #include "target.h" +#include "exceptions.h" #include "remote-utils.h" #include "gdb_string.h" #include "gdb_stat.h" #include "regcache.h" #include +#include "mips-tdep.h" /* Breakpoint types. Values 0, 1, and 2 must agree with the watch @@ -113,8 +115,6 @@ static int mips_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, static void mips_files_info (struct target_ops *ignore); -static void mips_create_inferior (char *execfile, char *args, char **env); - static void mips_mourn_inferior (void); static int pmon_makeb64 (unsigned long v, char *p, int n, int *chksum); @@ -483,7 +483,7 @@ mips_error (char *string,...) wrap_here (""); /* Force out any buffered output */ gdb_flush (gdb_stdout); if (error_pre_print) - fprintf_filtered (gdb_stderr, error_pre_print); + fputs_filtered (error_pre_print, gdb_stderr); vfprintf_filtered (gdb_stderr, string, args); fprintf_filtered (gdb_stderr, "\n"); va_end (args); @@ -497,7 +497,7 @@ mips_error (char *string,...) printf_unfiltered ("Ending remote MIPS debugging.\n"); target_mourn_inferior (); - throw_exception (RETURN_ERROR); + deprecated_throw_reason (RETURN_ERROR); } /* putc_readable - print a character, displaying non-printable chars in @@ -536,7 +536,7 @@ fputs_readable (const char *string, struct ui_file *file) timed out. TIMEOUT specifies timeout value in seconds. */ -int +static int mips_expect_timeout (const char *string, int timeout) { const char *p = string; @@ -592,41 +592,12 @@ mips_expect_timeout (const char *string, int timeout) mips_expect_timeout if a different timeout value is needed. */ -int +static int mips_expect (const char *string) { return mips_expect_timeout (string, remote_timeout); } -/* Read the required number of characters into the given buffer (which - is assumed to be large enough). The only failure is a timeout. */ -int -mips_getstring (char *string, int n) -{ - char *p = string; - int c; - - immediate_quit++; - while (n > 0) - { - c = serial_readchar (mips_desc, remote_timeout); - - if (c == SERIAL_TIMEOUT) - { - fprintf_unfiltered (gdb_stderr, - "Failed to read %d characters from target (TIMEOUT)\n", n); - immediate_quit--; - return 0; - } - - *p++ = c; - n--; - } - - immediate_quit--; - return 1; -} - /* Read a character from the remote, aborting on error. Returns SERIAL_TIMEOUT on timeout (since that's what serial_readchar() returns). FIXME: If we see the string mips_monitor_prompt from the @@ -816,9 +787,9 @@ mips_receive_trailer (unsigned char *trlr, int *pgarbage, int *pch, int timeout) static int mips_cksum (const unsigned char *hdr, const unsigned char *data, int len) { - register const unsigned char *p; - register int c; - register int cksum; + const unsigned char *p; + int c; + int cksum; cksum = 0; @@ -843,7 +814,7 @@ mips_send_packet (const char *s, int get_ack) { /* unsigned */ int len; unsigned char *packet; - register int cksum; + int cksum; int try; len = strlen (s); @@ -1242,7 +1213,7 @@ mips_request (int cmd, { if (mips_need_reply) internal_error (__FILE__, __LINE__, - "mips_request: Trying to send command before reply"); + _("mips_request: Trying to send command before reply")); sprintf (buff, "0x0 %c 0x%s 0x%s", cmd, paddr_nz (addr), paddr_nz (data)); mips_send_packet (buff, 1); mips_need_reply = 1; @@ -1253,7 +1224,7 @@ mips_request (int cmd, if (!mips_need_reply) internal_error (__FILE__, __LINE__, - "mips_request: Trying to get reply before command"); + _("mips_request: Trying to get reply before command")); mips_need_reply = 0; @@ -1283,13 +1254,13 @@ mips_request (int cmd, } static void -mips_initialize_cleanups (PTR arg) +mips_initialize_cleanups (void *arg) { mips_initializing = 0; } static void -mips_exit_cleanups (PTR arg) +mips_exit_cleanups (void *arg) { mips_exiting = 0; } @@ -1494,8 +1465,6 @@ mips_initialize (void) the request itself succeeds or fails. */ mips_request ('r', 0, 0, &err, mips_receive_wait, NULL); - set_current_frame (create_new_frame (read_fp (), read_pc ())); - select_frame (get_current_frame ()); } /* Open a connection to the remote board. */ @@ -1608,21 +1577,17 @@ device is attached to the target board (e.g., /dev/ttya).\n" /* FIXME: Should we call start_remote here? */ /* Try to figure out the processor model if possible. */ - ptype = mips_read_processor_type (); - if (ptype) - mips_set_processor_type_command (xstrdup (ptype), 0); + deprecated_mips_set_processor_regs_hack (); -/* This is really the job of start_remote however, that makes an assumption - that the target is about to print out a status message of some sort. That - doesn't happen here (in fact, it may not be possible to get the monitor to - send the appropriate packet). */ + /* This is really the job of start_remote however, that makes an + assumption that the target is about to print out a status message + of some sort. That doesn't happen here (in fact, it may not be + possible to get the monitor to send the appropriate packet). */ flush_cached_frames (); registers_changed (); stop_pc = read_pc (); - set_current_frame (create_new_frame (read_fp (), stop_pc)); - select_frame (get_current_frame ()); - print_stack_frame (selected_frame, -1, 1); + print_stack_frame (get_selected_frame (NULL), 0, SRC_AND_LOC); xfree (serial_port_name); } @@ -1721,7 +1686,7 @@ mips_resume (ptid_t ptid, int step, enum target_signal siggnal) /* Return the signal corresponding to SIG, where SIG is the number which the MIPS protocol uses for the signal. */ -enum target_signal +static enum target_signal mips_signal_from_protocol (int sig) { /* We allow a few more signals than the IDT board actually returns, on @@ -1791,19 +1756,19 @@ mips_wait (ptid_t ptid, struct target_waitstatus *status) &rpc, &rfp, &rsp, flags); if (nfields >= 3) { - char buf[MAX_REGISTER_RAW_SIZE]; + char buf[MAX_REGISTER_SIZE]; - store_unsigned_integer (buf, REGISTER_RAW_SIZE (PC_REGNUM), rpc); - supply_register (PC_REGNUM, buf); + store_unsigned_integer (buf, register_size (current_gdbarch, PC_REGNUM), rpc); + regcache_raw_supply (current_regcache, PC_REGNUM, buf); - store_unsigned_integer (buf, REGISTER_RAW_SIZE (PC_REGNUM), rfp); - supply_register (30, buf); /* This register they are avoiding and so it is unnamed */ + store_unsigned_integer (buf, register_size (current_gdbarch, PC_REGNUM), rfp); + regcache_raw_supply (current_regcache, 30, buf); /* This register they are avoiding and so it is unnamed */ - store_unsigned_integer (buf, REGISTER_RAW_SIZE (SP_REGNUM), rsp); - supply_register (SP_REGNUM, buf); + store_unsigned_integer (buf, register_size (current_gdbarch, SP_REGNUM), rsp); + regcache_raw_supply (current_regcache, SP_REGNUM, buf); - store_unsigned_integer (buf, REGISTER_RAW_SIZE (FP_REGNUM), 0); - supply_register (FP_REGNUM, buf); + store_unsigned_integer (buf, register_size (current_gdbarch, DEPRECATED_FP_REGNUM), 0); + regcache_raw_supply (current_regcache, DEPRECATED_FP_REGNUM, buf); if (nfields == 9) { @@ -1896,8 +1861,7 @@ mips_wait (ptid_t ptid, struct target_waitstatus *status) } /* We have to map between the register numbers used by gdb and the - register numbers used by the debugging protocol. This function - assumes that we are using tm-mips.h. */ + register numbers used by the debugging protocol. */ #define REGNO_OFFSET 96 @@ -1906,26 +1870,24 @@ mips_map_regno (int regno) { if (regno < 32) return regno; - if (regno >= FP0_REGNUM && regno < FP0_REGNUM + 32) - return regno - FP0_REGNUM + 32; - switch (regno) - { - case PC_REGNUM: - return REGNO_OFFSET + 0; - case CAUSE_REGNUM: - return REGNO_OFFSET + 1; - case HI_REGNUM: - return REGNO_OFFSET + 2; - case LO_REGNUM: - return REGNO_OFFSET + 3; - case FCRCS_REGNUM: - return REGNO_OFFSET + 4; - case FCRIR_REGNUM: - return REGNO_OFFSET + 5; - default: - /* FIXME: Is there a way to get the status register? */ - return 0; - } + if (regno >= mips_regnum (current_gdbarch)->fp0 + && regno < mips_regnum (current_gdbarch)->fp0 + 32) + return regno - mips_regnum (current_gdbarch)->fp0 + 32; + else if (regno == mips_regnum (current_gdbarch)->pc) + return REGNO_OFFSET + 0; + else if (regno == mips_regnum (current_gdbarch)->cause) + return REGNO_OFFSET + 1; + else if (regno == mips_regnum (current_gdbarch)->hi) + return REGNO_OFFSET + 2; + else if (regno == mips_regnum (current_gdbarch)->lo) + return REGNO_OFFSET + 3; + else if (regno == mips_regnum (current_gdbarch)->fp_control_status) + return REGNO_OFFSET + 4; + else if (regno == mips_regnum (current_gdbarch)->fp_implementation_revision) + return REGNO_OFFSET + 5; + else + /* FIXME: Is there a way to get the status register? */ + return 0; } /* Fetch the remote registers. */ @@ -1943,9 +1905,9 @@ mips_fetch_registers (int regno) return; } - if (regno == FP_REGNUM || regno == ZERO_REGNUM) - /* FP_REGNUM on the mips is a hack which is just supposed to read - zero (see also mips-nat.c). */ + if (regno == DEPRECATED_FP_REGNUM || regno == MIPS_ZERO_REGNUM) + /* DEPRECATED_FP_REGNUM on the mips is a hack which is just + supposed to read zero (see also mips-nat.c). */ val = 0; else { @@ -1972,12 +1934,12 @@ mips_fetch_registers (int regno) } { - char buf[MAX_REGISTER_RAW_SIZE]; + char buf[MAX_REGISTER_SIZE]; /* We got the number the register holds, but gdb expects to see a value in the target byte ordering. */ - store_unsigned_integer (buf, REGISTER_RAW_SIZE (regno), val); - supply_register (regno, buf); + store_unsigned_integer (buf, register_size (current_gdbarch, regno), val); + regcache_raw_supply (current_regcache, regno, buf); } } @@ -2186,7 +2148,7 @@ Give up (and stop debugging it)? ")) printf_unfiltered ("Ending remote MIPS debugging.\n"); target_mourn_inferior (); - throw_exception (RETURN_QUIT); + deprecated_throw_reason (RETURN_QUIT); } target_terminal_inferior (); @@ -2214,7 +2176,7 @@ Give up (and stop debugging it)? ")) /* Start running on the target board. */ static void -mips_create_inferior (char *execfile, char *args, char **env) +mips_create_inferior (char *execfile, char *args, char **env, int from_tty) { CORE_ADDR entry_pt; @@ -2235,7 +2197,7 @@ Can't pass arguments to remote MIPS board; arguments ignored."); /* FIXME: Should we set inferior_ptid here? */ - proceed (entry_pt, TARGET_SIGNAL_DEFAULT, 0); + write_pc (entry_pt); } /* Clean up after a process. Actually nothing to do. */ @@ -2251,161 +2213,39 @@ mips_mourn_inferior (void) /* We can write a breakpoint and read the shadow contents in one operation. */ -/* Insert a breakpoint. On targets that don't have built-in breakpoint - support, we read the contents of the target location and stash it, - then overwrite it with a breakpoint instruction. ADDR is the target - location in the target machine. CONTENTS_CACHE is a pointer to - memory allocated for saving the target contents. It is guaranteed - by the caller to be long enough to save sizeof BREAKPOINT bytes (this - is accomplished via BREAKPOINT_MAX). */ +/* Insert a breakpoint. On targets that don't have built-in + breakpoint support, we read the contents of the target location and + stash it, then overwrite it with a breakpoint instruction. ADDR is + the target location in the target machine. BPT is the breakpoint + being inserted or removed, which contains memory for saving the + target contents. */ static int -mips_insert_breakpoint (CORE_ADDR addr, char *contents_cache) +mips_insert_breakpoint (struct bp_target_info *bp_tgt) { if (monitor_supports_breakpoints) - return set_breakpoint (addr, MIPS_INSTLEN, BREAK_FETCH); + return set_breakpoint (bp_tgt->placed_address, MIPS_INSN32_SIZE, + BREAK_FETCH); else - return memory_insert_breakpoint (addr, contents_cache); + return memory_insert_breakpoint (bp_tgt); } static int -mips_remove_breakpoint (CORE_ADDR addr, char *contents_cache) +mips_remove_breakpoint (struct bp_target_info *bp_tgt) { if (monitor_supports_breakpoints) - return clear_breakpoint (addr, MIPS_INSTLEN, BREAK_FETCH); + return clear_breakpoint (bp_tgt->placed_address, MIPS_INSN32_SIZE, + BREAK_FETCH); else - return memory_remove_breakpoint (addr, contents_cache); + return memory_remove_breakpoint (bp_tgt); } -#if 0 /* currently not used */ -/* PMON does not currently provide support for the debug mode 'b' - commands to manipulate breakpoints. However, if we wanted to use - the monitor breakpoints (rather than the GDB BREAK_INSN version) - then this code performs the work needed to leave debug mode, - set/clear the breakpoint, and then return to debug mode. */ - -#define PMON_MAX_BP (33) /* 32 SW, 1 HW */ -static CORE_ADDR mips_pmon_bp_info[PMON_MAX_BP]; -/* NOTE: The code relies on this vector being zero-initialised by the system */ - -static int -pmon_insert_breakpoint (CORE_ADDR addr, char *contents_cache) -{ - int status; - - if (monitor_supports_breakpoints) - { - char tbuff[12]; /* space for breakpoint command */ - int bpnum; - CORE_ADDR bpaddr; - - /* PMON does not support debug level breakpoint set/remove: */ - if (mips_exit_debug ()) - mips_error ("Failed to exit debug mode"); - - sprintf (tbuff, "b %08x\r", addr); - mips_send_command (tbuff, 0); - - mips_expect ("Bpt "); - - if (!mips_getstring (tbuff, remote_timeout)) - return 1; - tbuff[2] = '\0'; /* terminate the string */ - if (sscanf (tbuff, "%d", &bpnum) != 1) - { - fprintf_unfiltered (gdb_stderr, - "Invalid decimal breakpoint number from target: %s\n", tbuff); - return 1; - } - - mips_expect (" = "); - - /* Lead in the hex number we are expecting: */ - tbuff[0] = '0'; - tbuff[1] = 'x'; - - /* FIXME!! only 8 bytes! need to expand for Bfd64; - which targets return 64-bit addresses? PMON returns only 32! */ - if (!mips_getstring (&tbuff[2], 8)) - return 1; - tbuff[10] = '\0'; /* terminate the string */ - - if (sscanf (tbuff, "0x%08x", &bpaddr) != 1) - { - fprintf_unfiltered (gdb_stderr, - "Invalid hex address from target: %s\n", tbuff); - return 1; - } - - if (bpnum >= PMON_MAX_BP) - { - fprintf_unfiltered (gdb_stderr, - "Error: Returned breakpoint number %d outside acceptable range (0..%d)\n", - bpnum, PMON_MAX_BP - 1); - return 1; - } - - if (bpaddr != addr) - fprintf_unfiltered (gdb_stderr, "Warning: Breakpoint addresses do not match: 0x%x != 0x%x\n", addr, bpaddr); - - mips_pmon_bp_info[bpnum] = bpaddr; - - mips_expect ("\r\n"); - mips_expect (mips_monitor_prompt); - - mips_enter_debug (); - - return 0; - } - - return mips_store_word (addr, BREAK_INSN, contents_cache); -} - -static int -pmon_remove_breakpoint (CORE_ADDR addr, char *contents_cache) -{ - if (monitor_supports_breakpoints) - { - int bpnum; - char tbuff[7]; /* enough for delete breakpoint command */ - - for (bpnum = 0; bpnum < PMON_MAX_BP; bpnum++) - if (mips_pmon_bp_info[bpnum] == addr) - break; - - if (bpnum >= PMON_MAX_BP) - { - fprintf_unfiltered (gdb_stderr, - "pmon_remove_breakpoint: Failed to find breakpoint at address 0x%s\n", - paddr_nz (addr)); - return 1; - } - - if (mips_exit_debug ()) - mips_error ("Failed to exit debug mode"); - - sprintf (tbuff, "db %02d\r", bpnum); - - mips_send_command (tbuff, -1); - /* NOTE: If the breakpoint does not exist then a "Bpt
not - set" message will be returned. */ - - mips_enter_debug (); - - return 0; - } - - return target_write_memory (addr, contents_cache, BREAK_INSN_SIZE); -} -#endif - - /* Tell whether this target can support a hardware breakpoint. CNT is the number of hardware breakpoints already installed. This implements the TARGET_CAN_USE_HARDWARE_WATCHPOINT macro. */ int -remote_mips_can_use_hardware_watchpoint (int cnt) +mips_can_use_watchpoint (int type, int cnt, int othertype) { return cnt < MAX_LSI_BREAKPOINTS && strcmp (target_shortname, "lsi") == 0; } @@ -2434,37 +2274,12 @@ calculate_mask (CORE_ADDR addr, int len) } -/* Insert a hardware breakpoint. This works only on LSI targets, which - implement ordinary breakpoints using hardware facilities. */ - -int -remote_mips_insert_hw_breakpoint (CORE_ADDR addr, char *contents_cache) -{ - if (strcmp (target_shortname, "lsi") == 0) - return mips_insert_breakpoint (addr, contents_cache); - else - return -1; -} - - -/* Remove a hardware breakpoint. This works only on LSI targets, which - implement ordinary breakpoints using hardware facilities. */ - -int -remote_mips_remove_hw_breakpoint (CORE_ADDR addr, char *contents_cache) -{ - if (strcmp (target_shortname, "lsi") == 0) - return mips_remove_breakpoint (addr, contents_cache); - else - return -1; -} - /* Set a data watchpoint. ADDR and LEN should be obvious. TYPE is 0 for a write watchpoint, 1 for a read watchpoint, or 2 for a read/write watchpoint. */ int -remote_mips_set_watchpoint (CORE_ADDR addr, int len, int type) +mips_insert_watchpoint (CORE_ADDR addr, int len, int type) { if (set_breakpoint (addr, len, type)) return -1; @@ -2473,7 +2288,7 @@ remote_mips_set_watchpoint (CORE_ADDR addr, int len, int type) } int -remote_mips_remove_watchpoint (CORE_ADDR addr, int len, int type) +mips_remove_watchpoint (CORE_ADDR addr, int len, int type) { if (clear_breakpoint (addr, len, type)) return -1; @@ -2482,7 +2297,7 @@ remote_mips_remove_watchpoint (CORE_ADDR addr, int len, int type) } int -remote_mips_stopped_by_watchpoint (void) +mips_stopped_by_watchpoint (void) { return hit_watchpoint; } @@ -2726,7 +2541,7 @@ common_breakpoint (int set, CORE_ADDR addr, int len, enum break_type type) flags = "f"; break; default: - internal_error (__FILE__, __LINE__, "failed internal consistency check"); + internal_error (__FILE__, __LINE__, _("failed internal consistency check")); } cmd = 'B'; @@ -2834,20 +2649,21 @@ mips_load_srec (char *args) /* FIXME! vma too small????? */ printf_filtered ("%s\t: 0x%4lx .. 0x%4lx ", s->name, (long) s->vma, - (long) (s->vma + s->_raw_size)); + (long) (s->vma + bfd_get_section_size (s))); gdb_flush (gdb_stdout); - for (i = 0; i < s->_raw_size; i += numbytes) + for (i = 0; i < bfd_get_section_size (s); i += numbytes) { - numbytes = min (srec_frame, s->_raw_size - i); + numbytes = min (srec_frame, bfd_get_section_size (s) - i); bfd_get_section_contents (abfd, s, buffer, i, numbytes); - reclen = mips_make_srec (srec, '3', s->vma + i, buffer, numbytes); + reclen = mips_make_srec (srec, '3', s->vma + i, + buffer, numbytes); send_srec (srec, reclen, s->vma + i); - if (ui_load_progress_hook) - ui_load_progress_hook (s->name, i); + if (deprecated_ui_load_progress_hook) + deprecated_ui_load_progress_hook (s->name, i); if (hashmark) { @@ -3321,11 +3137,11 @@ pmon_load_fast (char *file) for (s = abfd->sections; s && !finished; s = s->next) if (s->flags & SEC_LOAD) /* only deal with loadable sections */ { - bintotal += s->_raw_size; - final = (s->vma + s->_raw_size); + bintotal += bfd_get_section_size (s); + final = (s->vma + bfd_get_section_size (s)); printf_filtered ("%s\t: 0x%4x .. 0x%4x ", s->name, (unsigned int) s->vma, - (unsigned int) (s->vma + s->_raw_size)); + (unsigned int) (s->vma + bfd_get_section_size (s))); gdb_flush (gdb_stdout); /* Output the starting address */ @@ -3346,11 +3162,13 @@ pmon_load_fast (char *file) reclen = 0; - for (i = 0; ((i < s->_raw_size) && !finished); i += binamount) + for (i = 0; + i < bfd_get_section_size (s) && !finished; + i += binamount) { int binptr = 0; - binamount = min (BINCHUNK, s->_raw_size - i); + binamount = min (BINCHUNK, bfd_get_section_size (s) - i); bfd_get_section_contents (abfd, s, binbuf, i, binamount); @@ -3358,7 +3176,8 @@ pmon_load_fast (char *file) the line: */ for (; ((binamount - binptr) > 0);) { - pmon_make_fastrec (&bp, binbuf, &binptr, binamount, &reclen, &csum, &zerofill); + pmon_make_fastrec (&bp, binbuf, &binptr, binamount, + &reclen, &csum, &zerofill); if (reclen >= (MAXRECSIZE - CHECKSIZE)) { reclen = pmon_checkset (reclen, &bp, &csum); @@ -3370,8 +3189,8 @@ pmon_load_fast (char *file) break; } - if (ui_load_progress_hook) - ui_load_progress_hook (s->name, i); + if (deprecated_ui_load_progress_hook) + deprecated_ui_load_progress_hook (s->name, i); if (hashmark) { @@ -3443,7 +3262,7 @@ mips_load (char *file, int from_tty) /* Work around problem where PMON monitor updates the PC after a load to a different value than GDB thinks it has. The following ensures that the write_pc() WILL update the PC value: */ - register_valid[PC_REGNUM] = 0; + deprecated_register_valid[PC_REGNUM] = 0; } if (exec_bfd) write_pc (bfd_get_start_address (exec_bfd)); @@ -3477,6 +3296,8 @@ pmon_command (char *args, int from_tty) printf_filtered ("Received packet: %s\n", buf); } +extern initialize_file_ftype _initialize_remote_mips; /* -Wmissing-prototypes */ + void _initialize_remote_mips (void) { @@ -3488,10 +3309,14 @@ _initialize_remote_mips (void) mips_ops.to_fetch_registers = mips_fetch_registers; mips_ops.to_store_registers = mips_store_registers; mips_ops.to_prepare_to_store = mips_prepare_to_store; - mips_ops.to_xfer_memory = mips_xfer_memory; + mips_ops.deprecated_xfer_memory = mips_xfer_memory; mips_ops.to_files_info = mips_files_info; mips_ops.to_insert_breakpoint = mips_insert_breakpoint; mips_ops.to_remove_breakpoint = mips_remove_breakpoint; + mips_ops.to_insert_watchpoint = mips_insert_watchpoint; + mips_ops.to_remove_watchpoint = mips_remove_watchpoint; + mips_ops.to_stopped_by_watchpoint = mips_stopped_by_watchpoint; + mips_ops.to_can_use_hw_breakpoint = mips_can_use_watchpoint; mips_ops.to_kill = mips_kill; mips_ops.to_load = mips_load; mips_ops.to_create_inferior = mips_create_inferior; @@ -3546,54 +3371,60 @@ of the TFTP temporary file, if it differs from the filename seen by the board."; add_target (&ddb_ops); add_target (&lsi_ops); - add_show_from_set ( - add_set_cmd ("timeout", no_class, var_zinteger, - (char *) &mips_receive_wait, - "Set timeout in seconds for remote MIPS serial I/O.", - &setlist), - &showlist); - - add_show_from_set ( - add_set_cmd ("retransmit-timeout", no_class, var_zinteger, - (char *) &mips_retransmit_wait, - "Set retransmit timeout in seconds for remote MIPS serial I/O.\n\ + add_setshow_zinteger_cmd ("timeout", no_class, &mips_receive_wait, _("\ +Set timeout in seconds for remote MIPS serial I/O."), _("\ +Show timeout in seconds for remote MIPS serial I/O."), NULL, + NULL, + NULL, /* FIXME: i18n: */ + &setlist, &showlist); + + add_setshow_zinteger_cmd ("retransmit-timeout", no_class, + &mips_retransmit_wait, _("\ +Set retransmit timeout in seconds for remote MIPS serial I/O."), _("\ +Show retransmit timeout in seconds for remote MIPS serial I/O."), _("\ This is the number of seconds to wait for an acknowledgement to a packet\n\ -before resending the packet.", &setlist), - &showlist); - - add_show_from_set ( - add_set_cmd ("syn-garbage-limit", no_class, var_zinteger, - (char *) &mips_syn_garbage, - "Set the maximum number of characters to ignore when scanning for a SYN.\n\ +before resending the packet."), + NULL, + NULL, /* FIXME: i18n: */ + &setlist, &showlist); + + add_setshow_zinteger_cmd ("syn-garbage-limit", no_class, + &mips_syn_garbage, _("\ +Set the maximum number of characters to ignore when scanning for a SYN."), _("\ +Show the maximum number of characters to ignore when scanning for a SYN."), _("\ This is the maximum number of characters GDB will ignore when trying to\n\ -synchronize with the remote system. A value of -1 means that there is no limit\n\ -(Note that these characters are printed out even though they are ignored.)", - &setlist), - &showlist); - - add_show_from_set - (add_set_cmd ("monitor-prompt", class_obscure, var_string, - (char *) &mips_monitor_prompt, - "Set the prompt that GDB expects from the monitor.", - &setlist), - &showlist); - - add_show_from_set ( - add_set_cmd ("monitor-warnings", class_obscure, var_zinteger, - (char *) &monitor_warnings, - "Set printing of monitor warnings.\n" - "When enabled, monitor warnings about hardware breakpoints " - "will be displayed.", - &setlist), - &showlist); - - add_com ("pmon ", class_obscure, pmon_command, - "Send a packet to PMON (must be in debug mode)."); - - add_show_from_set (add_set_cmd ("mask-address", no_class, - var_boolean, &mask_address_p, - "Set zeroing of upper 32 bits of 64-bit addresses when talking to PMON targets.\n\ -Use \"on\" to enable the masking and \"off\" to disable it.\n", - &setlist), - &showlist); +synchronize with the remote system. A value of -1 means that there is no\n\ +limit. (Note that these characters are printed out even though they are\n\ +ignored.)"), + NULL, + NULL, /* FIXME: i18n: */ + &setlist, &showlist); + + add_setshow_string_cmd ("monitor-prompt", class_obscure, + &mips_monitor_prompt, _("\ +Set the prompt that GDB expects from the monitor."), _("\ +Show the prompt that GDB expects from the monitor."), NULL, + NULL, + NULL, /* FIXME: i18n: */ + &setlist, &showlist); + + add_setshow_zinteger_cmd ("monitor-warnings", class_obscure, + &monitor_warnings, _("\ +Set printing of monitor warnings."), _("\ +Show printing of monitor warnings."), _("\ +When enabled, monitor warnings about hardware breakpoints will be displayed."), + NULL, + NULL, /* FIXME: i18n: */ + &setlist, &showlist); + + add_com ("pmon", class_obscure, pmon_command, + _("Send a packet to PMON (must be in debug mode).")); + + add_setshow_boolean_cmd ("mask-address", no_class, &mask_address_p, _("\ +Set zeroing of upper 32 bits of 64-bit addresses when talking to PMON targets."), _("\ +Show zeroing of upper 32 bits of 64-bit addresses when talking to PMON targets."), _("\ +Use \"on\" to enable the masking and \"off\" to disable it."), + NULL, + NULL, /* FIXME: i18n: */ + &setlist, &showlist); }