daily update
[external/binutils.git] / gdb / cli / cli-dump.c
index f164574..1b2b5d4 100644 (file)
@@ -1,6 +1,6 @@
 /* Dump-to-file commands, for GDB, the GNU debugger.
 
-   Copyright (c) 2002, 2005, 2007, 2008, 2009, 2010
+   Copyright (c) 2002, 2005, 2007, 2008, 2009, 2010, 2011
    Free Software Foundation, Inc.
 
    Contributed by Red Hat.
 #include "target.h"
 #include "readline/readline.h"
 #include "gdbcore.h"
+#include "cli/cli-utils.h"
 
 #define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
 
 
 char *
-skip_spaces (char *chp)
-{
-  if (chp == NULL)
-    return NULL;
-  while (isspace (*chp))
-    chp++;
-  return chp;
-}
-
-char *
 scan_expression_with_cleanup (char **cmd, const char *def)
 {
   if ((*cmd) == NULL || (**cmd) == '\0')
@@ -183,7 +174,7 @@ append_command (char *cmd, int from_tty)
 
 static void
 dump_binary_file (const char *filename, const char *mode, 
-                 const bfd_byte *buf, int len)
+                 const bfd_byte *buf, ULONGEST len)
 {
   FILE *file;
   int status;
@@ -197,7 +188,7 @@ dump_binary_file (const char *filename, const char *mode,
 static void
 dump_bfd_file (const char *filename, const char *mode, 
               const char *target, CORE_ADDR vaddr, 
-              const bfd_byte *buf, int len)
+              const bfd_byte *buf, ULONGEST len)
 {
   bfd *obfd;
   asection *osection;
@@ -211,7 +202,9 @@ dump_bfd_file (const char *filename, const char *mode,
                                          | SEC_ALLOC
                                          | SEC_LOAD));
   osection->entsize = 0;
-  bfd_set_section_contents (obfd, osection, buf, 0, len);
+  if (!bfd_set_section_contents (obfd, osection, buf, 0, len))
+    warning (_("writing dump file '%s' (%s)"), filename, 
+            bfd_errmsg (bfd_get_error ()));
 }
 
 static void
@@ -520,7 +513,11 @@ restore_binary_file (char *filename, struct callback_data *data)
 
   /* Get the file size for reading.  */
   if (fseek (file, 0, SEEK_END) == 0)
-    len = ftell (file);
+    {
+      len = ftell (file);
+      if (len < 0)
+       perror_with_name (filename);
+    }
   else
     perror_with_name (filename);
 
@@ -668,13 +665,13 @@ _initialize_cli_dump (void)
 {
   struct cmd_list_element *c;
 
-  add_prefix_cmd ("dump", class_vars, dump_command, _("\
-Dump target code/data to a local file."),
+  add_prefix_cmd ("dump", class_vars, dump_command,
+                 _("Dump target code/data to a local file."),
                  &dump_cmdlist, "dump ",
                  0/*allow-unknown*/,
                  &cmdlist);
-  add_prefix_cmd ("append", class_vars, append_command, _("\
-Append target code/data to a local file."),
+  add_prefix_cmd ("append", class_vars, append_command,
+                 _("Append target code/data to a local file."),
                  &append_cmdlist, "append ",
                  0/*allow-unknown*/,
                  &cmdlist);
@@ -682,39 +679,39 @@ Append target code/data to a local file."),
   add_dump_command ("memory", dump_memory_command, "\
 Write contents of memory to a raw binary file.\n\
 Arguments are FILE START STOP.  Writes the contents of memory within the\n\
-range [START .. STOP) to the specifed FILE in raw target ordered bytes.");
+range [START .. STOP) to the specified FILE in raw target ordered bytes.");
 
   add_dump_command ("value", dump_value_command, "\
 Write the value of an expression to a raw binary file.\n\
 Arguments are FILE EXPRESSION.  Writes the value of EXPRESSION to\n\
 the specified FILE in raw target ordered bytes.");
 
-  add_prefix_cmd ("srec", all_commands, srec_dump_command, _("\
-Write target code/data to an srec file."),
+  add_prefix_cmd ("srec", all_commands, srec_dump_command,
+                 _("Write target code/data to an srec file."),
                  &srec_cmdlist, "dump srec ", 
                  0 /*allow-unknown*/, 
                  &dump_cmdlist);
 
-  add_prefix_cmd ("ihex", all_commands, ihex_dump_command, _("\
-Write target code/data to an intel hex file."),
+  add_prefix_cmd ("ihex", all_commands, ihex_dump_command,
+                 _("Write target code/data to an intel hex file."),
                  &ihex_cmdlist, "dump ihex ", 
                  0 /*allow-unknown*/, 
                  &dump_cmdlist);
 
-  add_prefix_cmd ("tekhex", all_commands, tekhex_dump_command, _("\
-Write target code/data to a tekhex file."),
+  add_prefix_cmd ("tekhex", all_commands, tekhex_dump_command,
+                 _("Write target code/data to a tekhex file."),
                  &tekhex_cmdlist, "dump tekhex ", 
                  0 /*allow-unknown*/, 
                  &dump_cmdlist);
 
-  add_prefix_cmd ("binary", all_commands, binary_dump_command, _("\
-Write target code/data to a raw binary file."),
+  add_prefix_cmd ("binary", all_commands, binary_dump_command,
+                 _("Write target code/data to a raw binary file."),
                  &binary_dump_cmdlist, "dump binary ", 
                  0 /*allow-unknown*/, 
                  &dump_cmdlist);
 
-  add_prefix_cmd ("binary", all_commands, binary_append_command, _("\
-Append target code/data to a raw binary file."),
+  add_prefix_cmd ("binary", all_commands, binary_append_command,
+                 _("Append target code/data to a raw binary file."),
                  &binary_append_cmdlist, "append binary ", 
                  0 /*allow-unknown*/, 
                  &append_cmdlist);
@@ -722,7 +719,7 @@ Append target code/data to a raw binary file."),
   add_cmd ("memory", all_commands, dump_srec_memory, _("\
 Write contents of memory to an srec file.\n\
 Arguments are FILE START STOP.  Writes the contents of memory\n\
-within the range [START .. STOP) to the specifed FILE in srec format."),
+within the range [START .. STOP) to the specified FILE in srec format."),
           &srec_cmdlist);
 
   add_cmd ("value", all_commands, dump_srec_value, _("\
@@ -734,7 +731,7 @@ to the specified FILE in srec format."),
   add_cmd ("memory", all_commands, dump_ihex_memory, _("\
 Write contents of memory to an ihex file.\n\
 Arguments are FILE START STOP.  Writes the contents of memory within\n\
-the range [START .. STOP) to the specifed FILE in intel hex format."),
+the range [START .. STOP) to the specified FILE in intel hex format."),
           &ihex_cmdlist);
 
   add_cmd ("value", all_commands, dump_ihex_value, _("\
@@ -746,7 +743,7 @@ to the specified FILE in intel hex format."),
   add_cmd ("memory", all_commands, dump_tekhex_memory, _("\
 Write contents of memory to a tekhex file.\n\
 Arguments are FILE START STOP.  Writes the contents of memory\n\
-within the range [START .. STOP) to the specifed FILE in tekhex format."),
+within the range [START .. STOP) to the specified FILE in tekhex format."),
           &tekhex_cmdlist);
 
   add_cmd ("value", all_commands, dump_tekhex_value, _("\
@@ -758,7 +755,7 @@ to the specified FILE in tekhex format."),
   add_cmd ("memory", all_commands, dump_binary_memory, _("\
 Write contents of memory to a raw binary file.\n\
 Arguments are FILE START STOP.  Writes the contents of memory\n\
-within the range [START .. STOP) to the specifed FILE in binary format."),
+within the range [START .. STOP) to the specified FILE in binary format."),
           &binary_dump_cmdlist);
 
   add_cmd ("value", all_commands, dump_binary_value, _("\
@@ -770,7 +767,7 @@ to the specified FILE in raw target ordered bytes."),
   add_cmd ("memory", all_commands, append_binary_memory, _("\
 Append contents of memory to a raw binary file.\n\
 Arguments are FILE START STOP.  Writes the contents of memory within the\n\
-range [START .. STOP) to the specifed FILE in raw target ordered bytes."),
+range [START .. STOP) to the specified FILE in raw target ordered bytes."),
           &binary_append_cmdlist);
 
   add_cmd ("value", all_commands, append_binary_value, _("\