Allow "set sysroot" with no argument to restore sysroot to empty
[deliverable/binutils-gdb.git] / gdb / m32r-rom.c
index f5dc7799964197b2a5961e5b851a06e79910ddf9..a2ac53795a67eb85bf1d2fbbe006754cc34ed45d 100644 (file)
@@ -1,8 +1,7 @@
 /* Remote debugging interface to m32r and mon2000 ROM monitors for GDB, 
    the GNU debugger.
 
-   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2004, 2005, 2007, 2008,
-   2009, 2010, 2011 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,12 +445,11 @@ 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 */
-       error ("Please use 'set board-address' to "
-              "set the M32R-EVA board's IP address.");
+      if (startswith (myIPaddress, "0.0."))    /* empty */
+       error (_("Please use 'set board-address' to "
+                "set the M32R-EVA board's IP address."));
       if (strchr (myIPaddress, '('))
        *(strchr (myIPaddress, '(')) = '\0';    /* delete trailing junk */
       board_addr = xstrdup (myIPaddress);
@@ -479,8 +480,8 @@ m32r_upload_command (char *args, int from_tty)
            }
        }
       if (server_addr == 0)    /* failed?  */
-       error ("Need to know gdb host computer's "
-              "IP address (use 'set server-address')");
+       error (_("Need to know gdb host computer's "
+                "IP address (use 'set server-address')"));
     }
 
   if (args == 0 || args[0] == 0)       /* No args: upload the current
@@ -492,8 +493,8 @@ m32r_upload_command (char *args, int from_tty)
       if (current_directory)
        download_path = xstrdup (current_directory);
       else
-       error ("Need to know default download "
-              "path (use 'set download-path')");
+       error (_("Need to know default download "
+                "path (use 'set download-path')"));
     }
 
   gettimeofday (&start_time, NULL);
@@ -514,14 +515,15 @@ m32r_upload_command (char *args, int from_tty)
   resp_len = monitor_expect_prompt (buf, sizeof (buf));        /* parse result?  */
 
   if (buf[0] == 0 || strstr (buf, "complete") == 0)
-    error ("Upload file not found: %s.srec\n"
-          "Check IP addresses and download path.",
-       args);
+    error (_("Upload file not found: %s.srec\n"
+            "Check IP addresses and download path."),
+          args);
   else
     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.033493 seconds and 4 git commands to generate.