Use class to manage BFD reference counts
[deliverable/binutils-gdb.git] / gdb / gcore.c
index a0ef0e6081e245bde47261c2366f7f3605ecfbb7..1d8a63f04cf4e2b0a487c7b8af73bb9f2bc3028f 100644 (file)
@@ -1,6 +1,6 @@
 /* Generate a core file for the inferior process.
 
-   Copyright (C) 2001-2016 Free Software Foundation, Inc.
+   Copyright (C) 2001-2017 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -34,6 +34,7 @@
 #include "regset.h"
 #include "gdb_bfd.h"
 #include "readline/tilde.h"
+#include <algorithm>
 
 /* The largest amount of memory to read from the target at once.  We
    must throttle it to limit the amount of memory used by GDB during
@@ -48,15 +49,15 @@ static int gcore_memory_sections (bfd *);
 /* create_gcore_bfd -- helper for gcore_command (exported).
    Open a new bfd core file for output, and return the handle.  */
 
-bfd *
+gdb_bfd_ref_ptr
 create_gcore_bfd (const char *filename)
 {
-  bfd *obfd = gdb_bfd_openw (filename, default_gcore_target ());
+  gdb_bfd_ref_ptr obfd (gdb_bfd_openw (filename, default_gcore_target ()));
 
-  if (!obfd)
+  if (obfd == NULL)
     error (_("Failed to open '%s' for output."), filename);
-  bfd_set_format (obfd, bfd_core);
-  bfd_set_arch_mach (obfd, default_gcore_arch (), default_gcore_mach ());
+  bfd_set_format (obfd.get (), bfd_core);
+  bfd_set_arch_mach (obfd.get (), default_gcore_arch (), default_gcore_mach ());
   return obfd;
 }
 
@@ -173,7 +174,7 @@ gcore_command (char *args, int from_tty)
                      "Opening corefile '%s' for output.\n", corefilename);
 
   /* Open the output file.  */
-  obfd = create_gcore_bfd (corefilename);
+  obfd = create_gcore_bfd (corefilename).release ();
 
   /* Need a cleanup that will close and delete the file.  */
   bfd_chain = make_cleanup (do_bfd_delete_cleanup, obfd);
@@ -572,7 +573,7 @@ gcore_copy_callback (bfd *obfd, asection *osec, void *ignored)
   if (!startswith (bfd_section_name (obfd, osec), "load"))
     return;
 
-  size = min (total_size, MAX_COPY_BYTES);
+  size = std::min (total_size, (bfd_size_type) MAX_COPY_BYTES);
   memhunk = (gdb_byte *) xmalloc (size);
   old_chain = make_cleanup (xfree, memhunk);
 
This page took 0.037496 seconds and 4 git commands to generate.