/* Remote debugging interface to m32r and mon2000 ROM monitors for GDB,
the GNU debugger.
- Copyright (C) 1996-2001, 2004-2005, 2007-2012 Free Software
- Foundation, Inc.
+ Copyright (C) 1996-2014 Free Software Foundation, Inc.
Adapted by Michael Snyder of Cygnus Support.
#include "symfile.h" /* for generic load */
#include <sys/time.h>
#include <time.h> /* for time_t */
-#include "gdb_string.h"
+#include <string.h>
#include "objfiles.h" /* for ALL_OBJFILES etc. */
#include "inferior.h"
#include <ctype.h>
#include "regcache.h"
+#include "gdb_bfd.h"
+#include "cli/cli-utils.h"
/*
* All this stuff just to get my host computer's IP address!
unsigned int *data_count = obj;
if (s->flags & SEC_LOAD)
{
- int addr_size = gdbarch_addr_bit (target_gdbarch) / 8;
+ int addr_size = gdbarch_addr_bit (target_gdbarch ()) / 8;
bfd_size_type section_size = bfd_section_size (abfd, s);
bfd_vma section_base = bfd_section_lma (abfd, s);
unsigned int buffer, i;
printf_filtered ("Loading section %s, size 0x%lx lma ",
bfd_section_name (abfd, s),
(unsigned long) section_size);
- fputs_filtered (paddress (target_gdbarch, section_base), gdb_stdout);
+ fputs_filtered (paddress (target_gdbarch (), section_base), gdb_stdout);
printf_filtered ("\n");
gdb_flush (gdb_stdout);
monitor_printf ("%s mw\r", phex_nz (section_base, addr_size));
m32r_load (char *filename, int from_tty)
{
bfd *abfd;
- asection *s;
- unsigned int i, data_count = 0;
+ unsigned int data_count = 0;
struct timeval start_time, end_time;
+ struct cleanup *cleanup;
if (filename == NULL || filename[0] == 0)
filename = get_exec_file (1);
- abfd = bfd_openr (filename, 0);
+ abfd = gdb_bfd_open (filename, NULL, -1);
if (!abfd)
error (_("Unable to open file %s."), filename);
+ cleanup = make_cleanup_bfd_unref (abfd);
if (bfd_check_format (abfd, bfd_object) == 0)
error (_("File is not an object file."));
gettimeofday (&start_time, NULL);
printf_filtered ("Loading section %s, size 0x%lx vma ",
bfd_section_name (abfd, s), section_size);
- fputs_filtered (paddress (target_gdbarch, section_base), gdb_stdout);
+ fputs_filtered (paddress (target_gdbarch (), section_base), gdb_stdout);
printf_filtered ("\n");
gdb_flush (gdb_stdout);
monitor_printf ("%x mw\r", section_base);
if (!(catch_errors (m32r_load_1, abfd, "Load aborted!\n", RETURN_MASK_ALL)))
{
monitor_printf ("q\n");
+ do_cleanups (cleanup);
return;
}
#endif
confused... */
clear_symtab_users (0);
+ do_cleanups (cleanup);
}
static void
-m32r_load_gen (char *filename, int from_tty)
+m32r_load_gen (struct target_ops *self, char *filename, int from_tty)
{
generic_load (filename, from_tty);
}
monitor_supply_register (regcache, regno, val);
if (regno == PSW_REGNUM)
{
+#if (defined SM_REGNUM || defined BSM_REGNUM || defined IE_REGNUM \
+ || defined BIE_REGNUM || defined COND_REGNUM || defined CBR_REGNUM \
+ || defined BPC_REGNUM || defined BCARRY_REGNUM)
unsigned long psw = strtoul (val, NULL, 16);
char *zero = "00000000", *one = "00000001";
+#endif
#ifdef SM_REGNUM
/* Stack mode bit */
/* register_pattern */
m32r_cmds.register_pattern = "\\(\\w+\\) += \\([0-9a-fA-F]+\\b\\)";
m32r_cmds.supply_register = m32r_supply_register;
- m32r_cmds.load_routine = NULL; /* load_routine (defaults to SRECs) */
m32r_cmds.load = NULL; /* download command */
m32r_cmds.loadresp = NULL; /* load response */
m32r_cmds.prompt = "ok "; /* monitor command prompt */
/* register_pattern */
mon2000_cmds.register_pattern = "\\(\\w+\\) += \\([0-9a-fA-F]+\\b\\)";
mon2000_cmds.supply_register = m32r_supply_register;
- mon2000_cmds.load_routine = NULL; /* load_routine (defaults to SRECs) */
mon2000_cmds.load = NULL; /* download command */
mon2000_cmds.loadresp = NULL; /* load response */
mon2000_cmds.prompt = "Mon2000>"; /* monitor command prompt */
char buf[1024];
struct hostent *hostent;
struct in_addr inet_addr;
+ struct cleanup *cleanup;
/* First check to see if there's an ethernet port! */
monitor_printf ("ust\r");
/* Scan second colon in the output from the "ust" command. */
char *myIPaddress = strchr (strchr (buf, ':') + 1, ':') + 1;
- while (isspace (*myIPaddress))
- myIPaddress++;
+ myIPaddress = skip_spaces (myIPaddress);
if (!strncmp (myIPaddress, "0.0.", 4)) /* empty */
error (_("Please use 'set board-address' to "
printf_filtered (" -- Ethernet load complete.\n");
gettimeofday (&end_time, NULL);
- abfd = bfd_openr (args, 0);
+ abfd = gdb_bfd_open (args, NULL, -1);
+ cleanup = make_cleanup_bfd_unref (abfd);
if (abfd != NULL)
{ /* Download is done -- print section statistics. */
if (bfd_check_format (abfd, bfd_object) == 0)
{
bfd_size_type section_size = bfd_section_size (abfd, s);
bfd_vma section_base = bfd_section_lma (abfd, s);
- unsigned int buffer;
data_count += section_size;
printf_filtered ("Loading section %s, size 0x%lx lma ",
bfd_section_name (abfd, s),
(unsigned long) section_size);
- fputs_filtered (paddress (target_gdbarch, section_base),
+ fputs_filtered (paddress (target_gdbarch (), section_base),
gdb_stdout);
printf_filtered ("\n");
gdb_flush (gdb_stdout);
confused... */
clear_symtab_users (0);
+ do_cleanups (cleanup);
}
/* Provide a prototype to silence -Wmissing-prototypes. */