Use unique_xmalloc_ptr in two solib functions
authorTom Tromey <tom@tromey.com>
Sun, 27 May 2018 15:27:56 +0000 (09:27 -0600)
committerTom Tromey <tom@tromey.com>
Mon, 18 Jun 2018 19:26:32 +0000 (13:26 -0600)
This removes a couple of cleanups by using unique_xmalloc_ptr instead.
These two changes are combined because the two functions are very
similar.

gdb/ChangeLog
2018-06-18  Tom Tromey  <tom@tromey.com>

* solib-frv.c (frv_relocate_main_executable): Use
unique_xmalloc_ptr.
* solib-dsbt.c (dsbt_relocate_main_executable): Use
unique_xmalloc_ptr.

gdb/ChangeLog
gdb/solib-dsbt.c
gdb/solib-frv.c

index 553bc8a2380def3cc9cfd224a19dc700dc55c37b..9c83a4a2619c2ea908ae8636da39efb17efbb1fa 100644 (file)
@@ -1,3 +1,10 @@
+2018-06-18  Tom Tromey  <tom@tromey.com>
+
+       * solib-frv.c (frv_relocate_main_executable): Use
+       unique_xmalloc_ptr.
+       * solib-dsbt.c (dsbt_relocate_main_executable): Use
+       unique_xmalloc_ptr.
+
 2018-06-18  Tom Tromey  <tom@tromey.com>
 
        * objfiles.h (inhibit_section_map_updates): Update.
index bf643febf89b09988fd513b35877d3ebaa4567ad..4f75526a2224ba926387decc7dc718f9a53d00c6 100644 (file)
@@ -918,8 +918,6 @@ static void
 dsbt_relocate_main_executable (void)
 {
   struct int_elf32_dsbt_loadmap *ldm;
-  struct cleanup *old_chain;
-  struct section_offsets *new_offsets;
   int changed;
   struct obj_section *osect;
   struct dsbt_info *info = get_dsbt_info ();
@@ -931,9 +929,8 @@ dsbt_relocate_main_executable (void)
   info->main_executable_lm_info = new lm_info_dsbt;
   info->main_executable_lm_info->map = ldm;
 
-  new_offsets = XCNEWVEC (struct section_offsets,
-                         symfile_objfile->num_sections);
-  old_chain = make_cleanup (xfree, new_offsets);
+  gdb::unique_xmalloc_ptr<struct section_offsets> new_offsets
+    (XCNEWVEC (struct section_offsets, symfile_objfile->num_sections));
   changed = 0;
 
   ALL_OBJFILE_OSECTIONS (symfile_objfile, osect)
@@ -967,9 +964,7 @@ dsbt_relocate_main_executable (void)
     }
 
   if (changed)
-    objfile_relocate (symfile_objfile, new_offsets);
-
-  do_cleanups (old_chain);
+    objfile_relocate (symfile_objfile, new_offsets.get ());
 
   /* Now that symfile_objfile has been relocated, we can compute the
      GOT value and stash it away.  */
index e772da61156575552a5ed31a2118924d8e69cd87..6ebc6d4b520e58cf921656395b6bdadbaf7cecad 100644 (file)
@@ -769,8 +769,6 @@ frv_relocate_main_executable (void)
   int status;
   CORE_ADDR exec_addr, interp_addr;
   struct int_elf32_fdpic_loadmap *ldm;
-  struct cleanup *old_chain;
-  struct section_offsets *new_offsets;
   int changed;
   struct obj_section *osect;
 
@@ -792,9 +790,8 @@ frv_relocate_main_executable (void)
   main_executable_lm_info = new lm_info_frv;
   main_executable_lm_info->map = ldm;
 
-  new_offsets = XCNEWVEC (struct section_offsets,
-                         symfile_objfile->num_sections);
-  old_chain = make_cleanup (xfree, new_offsets);
+  gdb::unique_xmalloc_ptr<struct section_offsets> new_offsets
+    (XCNEWVEC (struct section_offsets, symfile_objfile->num_sections));
   changed = 0;
 
   ALL_OBJFILE_OSECTIONS (symfile_objfile, osect)
@@ -828,9 +825,7 @@ frv_relocate_main_executable (void)
     }
 
   if (changed)
-    objfile_relocate (symfile_objfile, new_offsets);
-
-  do_cleanups (old_chain);
+    objfile_relocate (symfile_objfile, new_offsets.get ());
 
   /* Now that symfile_objfile has been relocated, we can compute the
      GOT value and stash it away.  */