/* Remote debugging interface for M32R/SDI.
- Copyright 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
Contributed by Renesas Technology Co.
Written by Kei Sakamoto <sakamoto.kei@renesas.com>.
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 "gdbcmd.h"
#include "gdb_string.h"
#include <ctype.h>
#include <signal.h>
+#ifdef __MINGW32__
+#include <winsock.h>
+#else
#include <netinet/in.h>
+#endif
#include <sys/types.h>
#include <sys/time.h>
#include <signal.h>
CORE_ADDR entry_pt;
if (args && *args)
- error ("Cannot pass arguments to remote STDEBUG process");
+ error (_("Cannot pass arguments to remote STDEBUG process"));
if (execfile == 0 || exec_bfd == 0)
- error ("No executable file specified");
+ error (_("No executable file specified"));
if (remote_debug)
fprintf_unfiltered (gdb_stdlog, "m32r_create_inferior(%s,%s)\n", execfile,
/* Install inferior's terminal modes. */
target_terminal_inferior ();
- proceed (entry_pt, TARGET_SIGNAL_DEFAULT, 0);
+ write_pc (entry_pt);
}
/* Open a connection to a remote debugger.
sdi_desc = serial_open (hostname);
if (!sdi_desc)
- error ("Connection refused\n");
+ error (_("Connection refused."));
if (get_ack () == -1)
- error ("Cannot connect to SDI target\n");
+ error (_("Cannot connect to SDI target."));
if (send_cmd (SDI_OPEN) == -1)
- error ("Cannot connect to SDI target\n");
+ error (_("Cannot connect to SDI target."));
/* Get maximum number of ib breakpoints */
send_one_arg_cmd (SDI_GET_ATTR, SDI_ATTR_BRK);
/* Write DBT instruction. */
buf[0] = SDI_WRITE_MEMORY;
- store_long_parameter (buf + 1, bp_addr);
+ store_long_parameter (buf + 1, (bp_addr & 0xfffffffc));
store_long_parameter (buf + 5, 4);
if ((bp_addr & 2) == 0 && bp_addr != (pc_addr & 0xfffffffc))
{
/* Wait for ready */
buf[0] = SDI_WAIT_FOR_READY;
if (serial_write (sdi_desc, buf, 1) != 0)
- error ("Remote connection closed");
+ error (_("Remote connection closed"));
while (1)
{
c = serial_readchar (sdi_desc, SDI_TIMEOUT);
if (c < 0)
- error ("Remote connection closed");
+ error (_("Remote connection closed"));
if (c == '-') /* error */
{
else
ret = serial_write (sdi_desc, ".", 1); /* packet to wait */
if (ret != 0)
- error ("Remote connection closed");
+ error (_("Remote connection closed"));
}
status->kind = TARGET_WAITKIND_STOPPED;
{
if (!mmu_on)
bp_addr &= 0x7fffffff;
- buf[0] = SDI_READ_MEMORY;
+ buf[0] = SDI_WRITE_MEMORY;
store_long_parameter (buf + 1, bp_addr & 0xfffffffc);
store_long_parameter (buf + 5, 4);
buf[9] = bp_data[i][0];
/* Read/Write memory. */
static int
-m32r_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len,
+m32r_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len,
int write,
struct mem_attrib *attrib, struct target_ops *target)
{
}
static int
-m32r_insert_breakpoint (CORE_ADDR addr, char *shadow)
+m32r_insert_breakpoint (struct bp_target_info *bp_tgt)
{
+ CORE_ADDR addr = bp_tgt->placed_address;
int ib_breakpoints;
unsigned char buf[13];
int i, c;
if (remote_debug)
- fprintf_unfiltered (gdb_stdlog, "m32r_insert_breakpoint(%08lx,\"%s\")\n",
- addr, shadow);
+ fprintf_unfiltered (gdb_stdlog, "m32r_insert_breakpoint(%08lx,...)\n",
+ addr);
if (use_ib_breakpoints)
ib_breakpoints = max_ib_breakpoints;
}
}
- error ("Too many breakpoints");
+ error (_("Too many breakpoints"));
return 1;
}
static int
-m32r_remove_breakpoint (CORE_ADDR addr, char *shadow)
+m32r_remove_breakpoint (struct bp_target_info *bp_tgt)
{
+ CORE_ADDR addr = bp_tgt->placed_address;
int i;
if (remote_debug)
- fprintf_unfiltered (gdb_stdlog, "m32r_remove_breakpoint(%08lx,\"%s\")\n",
- addr, shadow);
+ fprintf_unfiltered (gdb_stdlog, "m32r_remove_breakpoint(%08lx)\n",
+ addr);
for (i = 0; i < MAX_BREAKPOINTS; i++)
{
char *filename;
int quiet;
int nostart;
- time_t start_time, end_time; /* Start and end times of download */
+ struct timeval start_time, end_time;
unsigned long data_count; /* Number of bytes transferred to memory */
int ret;
static RETSIGTYPE (*prev_sigint) ();
else if (strncmp (arg, "-nostart", strlen (arg)) == 0)
nostart = 1;
else
- error ("Unknown option `%s'", arg);
+ error (_("Unknown option `%s'"), arg);
}
if (!filename)
old_chain = make_cleanup_bfd_close (pbfd);
if (!bfd_check_format (pbfd, bfd_object))
- error ("\"%s\" is not an object file: %s", filename,
+ error (_("\"%s\" is not an object file: %s"), filename,
bfd_errmsg (bfd_get_error ()));
- start_time = time (NULL);
+ gettimeofday (&start_time, NULL);
data_count = 0;
interrupted = 0;
bfd_get_section_contents (pbfd, section, buf + 9, fptr, count);
if (send_data (buf, count + 9) <= 0)
- error ("Error while downloading %s section.",
+ error (_("Error while downloading %s section."),
bfd_get_section_name (pbfd, section));
if (!quiet)
interrupted = 0;
signal (SIGINT, prev_sigint);
- end_time = time (NULL);
+ gettimeofday (&end_time, NULL);
/* Make the PC point at the start address */
if (exec_bfd)
printf_unfiltered ("[Starting %s at 0x%lx]\n", filename, entry);
}
- print_transfer_performance (gdb_stdout, data_count, 0,
- end_time - start_time);
+ print_transfer_performance (gdb_stdout, data_count, 0, &start_time,
+ &end_time);
do_cleanups (old_chain);
}
}
}
- error ("Too many watchpoints");
+ error (_("Too many watchpoints"));
return 1;
}
return 0;
}
-CORE_ADDR
-m32r_stopped_data_address (void)
+int
+m32r_stopped_data_address (struct target_ops *target, CORE_ADDR *addr_p)
{
- return hit_watchpoint_addr;
+ int rc = 0;
+ if (hit_watchpoint_addr != 0x00000000)
+ {
+ *addr_p = hit_watchpoint_addr;
+ rc = 1;
+ }
+ return rc;
}
int
m32r_stopped_by_watchpoint (void)
{
- return (hit_watchpoint_addr != 0x00000000);
+ CORE_ADDR addr;
+ return m32r_stopped_data_address (¤t_target, &addr);
}
m32r_ops.to_fetch_registers = m32r_fetch_register;
m32r_ops.to_store_registers = m32r_store_register;
m32r_ops.to_prepare_to_store = m32r_prepare_to_store;
- m32r_ops.to_xfer_memory = m32r_xfer_memory;
+ m32r_ops.deprecated_xfer_memory = m32r_xfer_memory;
m32r_ops.to_files_info = m32r_files_info;
m32r_ops.to_insert_breakpoint = m32r_insert_breakpoint;
m32r_ops.to_remove_breakpoint = m32r_remove_breakpoint;
add_target (&m32r_ops);
add_com ("sdireset", class_obscure, sdireset_command,
- "Reset SDI connection.");
+ _("Reset SDI connection."));
add_com ("sdistatus", class_obscure, sdistatus_command,
- "Show status of SDI connection.");
+ _("Show status of SDI connection."));
add_com ("debug_chaos", class_obscure, debug_chaos_command,
- "Debug M32R/Chaos.");
+ _("Debug M32R/Chaos."));
add_com ("use_debug_dma", class_obscure, use_debug_dma_command,
- "Use debug DMA mem access.");
+ _("Use debug DMA mem access."));
add_com ("use_mon_code", class_obscure, use_mon_code_command,
- "Use mon code mem access.");
+ _("Use mon code mem access."));
add_com ("use_ib_break", class_obscure, use_ib_breakpoints_command,
- "Set breakpoints by IB break.");
+ _("Set breakpoints by IB break."));
add_com ("use_dbt_break", class_obscure, use_dbt_breakpoints_command,
- "Set breakpoints by dbt.");
+ _("Set breakpoints by dbt."));
}