* value.c (set_internalvar): Use value_free, not xfree.
[binutils-gdb.git] / gdb / exec.c
index ff9448182356dbbacfdd57434da566ce21b0ba50..542af0e3ccf9f2bfaaaf72964138c192fa793beb 100644 (file)
@@ -1,7 +1,7 @@
 /* Work with executable files, for GDB. 
 
    Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-   1998, 1999, 2000, 2001, 2002, 2003, 2007, 2008
+   1998, 1999, 2000, 2001, 2002, 2003, 2007, 2008, 2009
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -217,8 +217,11 @@ exec_file_attach (char *filename, int from_tty)
                            scratch_chan);
 
       if (!exec_bfd)
-       error (_("\"%s\": could not open as an executable file: %s"),
-              scratch_pathname, bfd_errmsg (bfd_get_error ()));
+       {
+         close (scratch_chan);
+         error (_("\"%s\": could not open as an executable file: %s"),
+                scratch_pathname, bfd_errmsg (bfd_get_error ()));
+       }
 
       /* At this point, scratch_pathname and exec_bfd->name both point to the
          same malloc'd string.  However exec_close() will attempt to free it
@@ -302,10 +305,7 @@ exec_file_command (char *args, int from_tty)
       /* Scan through the args and pick up the first non option arg
          as the filename.  */
 
-      argv = buildargv (args);
-      if (argv == NULL)
-        nomem (0);
-
+      argv = gdb_buildargv (args);
       make_cleanup_freeargv (argv);
 
       for (; (*argv != NULL) && (**argv == '-'); argv++)
@@ -466,7 +466,7 @@ xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write,
   int res;
   struct section_table *p;
   CORE_ADDR nextsectaddr, memend;
-  asection *section = NULL;
+  struct obj_section *section = NULL;
 
   if (len <= 0)
     internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
@@ -483,8 +483,9 @@ xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write,
 
   for (p = target->to_sections; p < target->to_sections_end; p++)
     {
-      if (overlay_debugging && section && 
-         strcmp (section->name, p->the_bfd_section->name) != 0)
+      if (overlay_debugging && section
+         && strcmp (section->the_bfd_section->name,
+                    p->the_bfd_section->name) != 0)
        continue;               /* not the section we need */
       if (memaddr >= p->addr)
         {