Allocate breakpoint_objfile_data with new
authorSimon Marchi <simon.marchi@ericsson.com>
Sat, 28 Oct 2017 02:01:21 +0000 (22:01 -0400)
committerSimon Marchi <simon.marchi@ericsson.com>
Sat, 28 Oct 2017 02:01:21 +0000 (22:01 -0400)
Allocate with new and free with delete.  This allows using an
std::vector in the following patch.

I renamed free_breakpoint_probes to free_breakpoint_objfile_data,
because it now doesn't only free the probes vector, but also the
breakpoint_objfile_data structure itself.

gdb/ChangeLog:

* breakpoint.c (breakpoint_objfile_data): Initialize fields.
(get_breakpoint_objfile_data): Allocate breakpoint_objfile_data
with new.
(free_breakpoint_probes): Rename to ...
(free_breakpoint_objfile_data): ... this, and call delete on
bp_objfile_data..

gdb/ChangeLog
gdb/breakpoint.c

index c1a3deeddc664871ac74a314659d698c8de8e1f9..9b912144d30b1c5024c94c272dd20a59f1edf8ee 100644 (file)
@@ -1,3 +1,12 @@
+2017-10-27  Simon Marchi  <simon.marchi@ericsson.com>
+
+       * breakpoint.c (breakpoint_objfile_data): Initialize fields.
+       (get_breakpoint_objfile_data): Allocate breakpoint_objfile_data
+       with new.
+       (free_breakpoint_probes): Rename to ...
+       (free_breakpoint_objfile_data): ... this, and call delete on
+       bp_objfile_data..
+
 2017-10-27  Simon Marchi  <simon.marchi@polymtl.ca>
 
        * auto-load.c: Don't include gdb_vecs.h, include algorithm.
index 10fccb8d2db224a3b6ec3d660a60bf3c4aaa07a1..3601e7dec54dbc03c6603c4a3e089ca8c8bee573 100644 (file)
@@ -3183,28 +3183,28 @@ static const char *const longjmp_names[] =
 struct breakpoint_objfile_data
 {
   /* Minimal symbol for "_ovly_debug_event" (if any).  */
-  struct bound_minimal_symbol overlay_msym;
+  struct bound_minimal_symbol overlay_msym {};
 
   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
-  struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
+  struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
 
   /* True if we have looked for longjmp probes.  */
-  int longjmp_searched;
+  int longjmp_searched = 0;
 
   /* SystemTap probe points for longjmp (if any).  */
-  VEC (probe_p) *longjmp_probes;
+  VEC (probe_p) *longjmp_probes = NULL;
 
   /* Minimal symbol for "std::terminate()" (if any).  */
-  struct bound_minimal_symbol terminate_msym;
+  struct bound_minimal_symbol terminate_msym {};
 
   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
-  struct bound_minimal_symbol exception_msym;
+  struct bound_minimal_symbol exception_msym {};
 
   /* True if we have looked for exception probes.  */
-  int exception_searched;
+  int exception_searched = 0;
 
   /* SystemTap probe points for unwinding (if any).  */
-  VEC (probe_p) *exception_probes;
+  VEC (probe_p) *exception_probes = NULL;
 };
 
 static const struct objfile_data *breakpoint_objfile_key;
@@ -3232,23 +3232,22 @@ get_breakpoint_objfile_data (struct objfile *objfile)
                     objfile_data (objfile, breakpoint_objfile_key));
   if (bp_objfile_data == NULL)
     {
-      bp_objfile_data =
-       XOBNEW (&objfile->objfile_obstack, struct breakpoint_objfile_data);
-
-      memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
+      bp_objfile_data = new breakpoint_objfile_data ();
       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
     }
   return bp_objfile_data;
 }
 
 static void
-free_breakpoint_probes (struct objfile *obj, void *data)
+free_breakpoint_objfile_data (struct objfile *obj, void *data)
 {
   struct breakpoint_objfile_data *bp_objfile_data
     = (struct breakpoint_objfile_data *) data;
 
   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
   VEC_free (probe_p, bp_objfile_data->exception_probes);
+
+  delete bp_objfile_data;
 }
 
 static void
@@ -15544,7 +15543,7 @@ _initialize_breakpoint (void)
   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
 
   breakpoint_objfile_key
-    = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
+    = register_objfile_data_with_cleanup (NULL, free_breakpoint_objfile_data);
 
   breakpoint_chain = 0;
   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
This page took 0.039648 seconds and 4 git commands to generate.