Simplify hppa-tdep.c use of objfile_key
authorTom Tromey <tom@tromey.com>
Sat, 5 Mar 2022 00:14:44 +0000 (17:14 -0700)
committerTom Tromey <tom@tromey.com>
Sun, 6 Mar 2022 17:20:31 +0000 (10:20 -0700)
I happened to notice a couple of unnecessary casts in hppa-tdep.c, and
then I saw that the use of objfile_key could be simplified -- removing
some code and using the default deleter rather than noop_deleter.

Tested by rebuilding.  Let me know what you think.

gdb/hppa-tdep.c

index 760cb1bea13f23e0b619b2dc3629abd7ab82bd40..cf84555a28cc75115a4b53bcd1456b7b4165182d 100644 (file)
@@ -70,12 +70,12 @@ struct hppa_unwind_info
 
 struct hppa_objfile_private
   {
-    struct hppa_unwind_info *unwind_info;      /* a pointer */
-    struct so_list *so_info;                   /* a pointer  */
-    CORE_ADDR dp;
+    struct hppa_unwind_info *unwind_info = nullptr;    /* a pointer */
+    struct so_list *so_info = nullptr;                 /* a pointer  */
+    CORE_ADDR dp = 0;
 
-    int dummy_call_sequence_reg;
-    CORE_ADDR dummy_call_sequence_addr;
+    int dummy_call_sequence_reg = 0;
+    CORE_ADDR dummy_call_sequence_addr = 0;
   };
 
 /* hppa-specific object data -- unwind and solib info.
@@ -84,9 +84,7 @@ struct hppa_objfile_private
    that separately and make this static. The solib data is probably hpux-
    specific, so we can create a separate extern objfile_data that is registered
    by hppa-hpux-tdep.c and shared with pa64solib.c and somsolib.c.  */
-static const struct objfile_key<hppa_objfile_private,
-                               gdb::noop_deleter<hppa_objfile_private>>
-  hppa_objfile_priv_data;
+static const struct objfile_key<hppa_objfile_private> hppa_objfile_priv_data;
 
 /* Get at various relevant fields of an instruction word.  */
 #define MASK_5 0x1f
@@ -204,16 +202,6 @@ hppa_symbol_address(const char *sym)
     return (CORE_ADDR)-1;
 }
 
-static struct hppa_objfile_private *
-hppa_init_objfile_priv_data (struct objfile *objfile)
-{
-  hppa_objfile_private *priv
-    = OBSTACK_ZALLOC (&objfile->objfile_obstack, hppa_objfile_private);
-
-  hppa_objfile_priv_data.set (objfile, priv);
-
-  return priv;
-}
 \f
 
 /* Compare the start address for two unwind entries returning 1 if 
@@ -471,7 +459,7 @@ read_unwind_info (struct objfile *objfile)
   /* Keep a pointer to the unwind information.  */
   obj_private = hppa_objfile_priv_data.get (objfile);
   if (obj_private == NULL)
-    obj_private = hppa_init_objfile_priv_data (objfile);
+    obj_private = hppa_objfile_priv_data.emplace (objfile);
 
   obj_private->unwind_info = ui;
 }
@@ -485,7 +473,6 @@ struct unwind_table_entry *
 find_unwind_entry (CORE_ADDR pc)
 {
   int first, middle, last;
-  struct hppa_objfile_private *priv;
 
   if (hppa_debug)
     fprintf_unfiltered (gdb_stdlog, "{ find_unwind_entry %s -> ",
@@ -503,9 +490,9 @@ find_unwind_entry (CORE_ADDR pc)
     {
       struct hppa_unwind_info *ui;
       ui = NULL;
-      priv = hppa_objfile_priv_data.get (objfile);
+      struct hppa_objfile_private *priv = hppa_objfile_priv_data.get (objfile);
       if (priv)
-       ui = ((struct hppa_objfile_private *) priv)->unwind_info;
+       ui = priv->unwind_info;
 
       if (!ui)
        {
@@ -513,7 +500,7 @@ find_unwind_entry (CORE_ADDR pc)
          priv = hppa_objfile_priv_data.get (objfile);
          if (priv == NULL)
            error (_("Internal error reading unwind information."));
-         ui = ((struct hppa_objfile_private *) priv)->unwind_info;
+         ui = priv->unwind_info;
        }
 
       /* First, check the cache.  */