[spu] Don't call set_gdbarch_cannot_step_breakpoint in spu_gdbarch_init
[deliverable/binutils-gdb.git] / gdb / m32r-rom.c
index b079b940123e26cbe41d58c1b78a621db1b873ad..a2ac53795a67eb85bf1d2fbbe006754cc34ed45d 100644 (file)
@@ -1,8 +1,7 @@
 /* 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-2015 Free Software Foundation, Inc.
 
    Adapted by Michael Snyder of Cygnus Support.
 
@@ -26,7 +25,6 @@
 #include "defs.h"
 #include "gdbcore.h"
 #include "target.h"
-#include "exceptions.h"
 #include "monitor.h"
 #include "serial.h"
 #include "symtab.h"
 #include "symfile.h"           /* for generic load */
 #include <sys/time.h>
 #include <time.h>              /* for time_t */
-#include "gdb_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!
@@ -78,7 +77,7 @@ m32r_load_section (bfd *abfd, asection *s, void *obj)
   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;
@@ -88,7 +87,7 @@ m32r_load_section (bfd *abfd, asection *s, void *obj)
       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));
@@ -122,16 +121,17 @@ static void
 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);
@@ -147,7 +147,7 @@ m32r_load (char *filename, int from_tty)
 
        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);
@@ -165,6 +165,7 @@ m32r_load (char *filename, int from_tty)
   if (!(catch_errors (m32r_load_1, abfd, "Load aborted!\n", RETURN_MASK_ALL)))
     {
       monitor_printf ("q\n");
+      do_cleanups (cleanup);
       return;
     }
 #endif
@@ -189,17 +190,15 @@ m32r_load (char *filename, int from_tty)
      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, const char *filename, int from_tty)
 {
   generic_load (filename, from_tty);
 }
 
-static void m32r_open (char *args, int from_tty);
-static void mon2000_open (char *args, int from_tty);
-
 /* This array of registers needs to match the indexes used by GDB.  The
    whole reason this exists is because the various ROM monitors use
    different names than GDB does, and don't support all the registers
@@ -238,8 +237,12 @@ m32r_supply_register (struct regcache *regcache, char *regname,
       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 */
@@ -342,7 +345,6 @@ init_m32r_cmds (void)
                                        /* 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 */
@@ -355,7 +357,7 @@ init_m32r_cmds (void)
 }                              /* init_m32r_cmds */
 
 static void
-m32r_open (char *args, int from_tty)
+m32r_open (const char *args, int from_tty)
 {
   monitor_open (args, &m32r_cmds, from_tty);
 }
@@ -403,7 +405,6 @@ init_mon2000_cmds (void)
                                                /* 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 */
@@ -416,7 +417,7 @@ init_mon2000_cmds (void)
 }                              /* init_mon2000_cmds */
 
 static void
-mon2000_open (char *args, int from_tty)
+mon2000_open (const char *args, int from_tty)
 {
   monitor_open (args, &mon2000_cmds, from_tty);
 }
@@ -431,6 +432,7 @@ m32r_upload_command (char *args, int from_tty)
   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");
@@ -443,10 +445,9 @@ m32r_upload_command (char *args, int from_tty)
       /* 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 */
+      if (startswith (myIPaddress, "0.0."))    /* empty */
        error (_("Please use 'set board-address' to "
                 "set the M32R-EVA board's IP address."));
       if (strchr (myIPaddress, '('))
@@ -521,7 +522,8 @@ m32r_upload_command (char *args, int from_tty)
     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)
@@ -533,14 +535,13 @@ m32r_upload_command (char *args, int from_tty)
          {
            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);
@@ -563,6 +564,7 @@ m32r_upload_command (char *args, int from_tty)
      confused...  */
 
   clear_symtab_users (0);
+  do_cleanups (cleanup);
 }
 
 /* Provide a prototype to silence -Wmissing-prototypes.  */
This page took 0.026318 seconds and 4 git commands to generate.