* archive.c (SECTION Archives): Update documentation.
[deliverable/binutils-gdb.git] / gdb / cli / cli-dump.c
index f164574bcd2c3971c8e9aaf971eb93a97ae3e927..7341f0029ef8dcd896bd98fe7cf3985ac3cc02b7 100644 (file)
@@ -1,7 +1,6 @@
 /* Dump-to-file commands, for GDB, the GNU debugger.
 
-   Copyright (c) 2002, 2005, 2007, 2008, 2009, 2010
-   Free Software Foundation, Inc.
+   Copyright (c) 2002, 2005, 2007-2012 Free Software Foundation, Inc.
 
    Contributed by Red Hat.
 
 #include "target.h"
 #include "readline/readline.h"
 #include "gdbcore.h"
+#include "cli/cli-utils.h"
+#include "gdb_bfd.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)
 {
@@ -121,12 +112,12 @@ bfd_openr_with_cleanup (const char *filename, const char *target)
 {
   bfd *ibfd;
 
-  ibfd = bfd_openr (filename, target);
+  ibfd = gdb_bfd_openr (filename, target);
   if (ibfd == NULL)
     error (_("Failed to open %s: %s."), filename, 
           bfd_errmsg (bfd_get_error ()));
 
-  make_cleanup_bfd_close (ibfd);
+  make_cleanup_bfd_unref (ibfd);
   if (!bfd_check_format (ibfd, bfd_object))
     error (_("'%s' is not a recognized file format."), filename);
 
@@ -141,11 +132,11 @@ bfd_openw_with_cleanup (const char *filename, const char *target,
 
   if (*mode == 'w')    /* Write: create new file */
     {
-      obfd = bfd_openw (filename, target);
+      obfd = gdb_bfd_openw (filename, target);
       if (obfd == NULL)
        error (_("Failed to open %s: %s."), filename, 
               bfd_errmsg (bfd_get_error ()));
-      make_cleanup_bfd_close (obfd);
+      make_cleanup_bfd_unref (obfd);
       if (!bfd_set_format (obfd, bfd_object))
        error (_("bfd_openw_with_cleanup: %s."), bfd_errmsg (bfd_get_error ()));
     }
@@ -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, _("\
This page took 0.027247 seconds and 4 git commands to generate.