Rename common to gdbsupport
[deliverable/binutils-gdb.git] / gdb / solib-aix.c
index 608a702a9c4412224fdaeca4d7973bb65139305c..bf2f30d01cd33c4314e25647cda67522338c466e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2018 Free Software Foundation, Inc.
+/* Copyright (C) 2013-2019 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -26,6 +26,7 @@
 #include "xcoffread.h"
 #include "observable.h"
 #include "gdbcmd.h"
+#include "gdbsupport/scope-exit.h"
 
 /* Variable controlling the output of the debugging traces for
    this module.  */
@@ -242,18 +243,19 @@ static VEC (lm_info_aix_p) *
 solib_aix_parse_libraries (const char *library)
 {
   VEC (lm_info_aix_p) *result = NULL;
-  struct cleanup *back_to = make_cleanup (solib_aix_free_library_list,
-                                          &result);
+  auto cleanup = make_scope_exit ([&] ()
+    {
+      solib_aix_free_library_list (&result);
+    });
 
   if (gdb_xml_parse_quick (_("aix library list"), "library-list-aix.dtd",
                            library_list_elements, library, &result) == 0)
     {
       /* Parsed successfully, keep the result.  */
-      discard_cleanups (back_to);
+      cleanup.release ();
       return result;
     }
 
-  do_cleanups (back_to);
   return NULL;
 }
 
@@ -280,7 +282,7 @@ solib_aix_get_library_list (struct inferior *inf, const char *warning_msg)
     return data->library_list;
 
   gdb::optional<gdb::char_vector> library_document
-    = target_read_stralloc (&current_target, TARGET_OBJECT_LIBRARIES_AIX,
+    = target_read_stralloc (current_top_target (), TARGET_OBJECT_LIBRARIES_AIX,
                            NULL);
   if (!library_document && warning_msg != NULL)
     {
@@ -439,14 +441,14 @@ solib_aix_clear_solib (void)
    The resulting array is computed on the heap and must be
    deallocated after use.  */
 
-static struct section_offsets *
+static gdb::unique_xmalloc_ptr<struct section_offsets>
 solib_aix_get_section_offsets (struct objfile *objfile,
                               lm_info_aix *info)
 {
-  struct section_offsets *offsets;
   bfd *abfd = objfile->obfd;
 
-  offsets = XCNEWVEC (struct section_offsets, objfile->num_sections);
+  gdb::unique_xmalloc_ptr<struct section_offsets> offsets
+    (XCNEWVEC (struct section_offsets, objfile->num_sections));
 
   /* .text */
 
@@ -515,12 +517,10 @@ solib_aix_solib_create_inferior_hook (int from_tty)
 
   if (symfile_objfile != NULL)
     {
-      struct section_offsets *offsets
+      gdb::unique_xmalloc_ptr<struct section_offsets> offsets
        = solib_aix_get_section_offsets (symfile_objfile, exec_info);
-      struct cleanup *cleanup = make_cleanup (xfree, offsets);
 
-      objfile_relocate (symfile_objfile, offsets);
-      do_cleanups (cleanup);
+      objfile_relocate (symfile_objfile, offsets.get ());
     }
 }
 
This page took 0.02639 seconds and 4 git commands to generate.