Allocate regset structures in the gdbarch's obstack, not using
authorJim Blandy <jimb@codesourcery.com>
Fri, 21 May 2004 22:15:10 +0000 (22:15 +0000)
committerJim Blandy <jimb@codesourcery.com>
Fri, 21 May 2004 22:15:10 +0000 (22:15 +0000)
xmalloc.
* regset.c (regset_alloc): Renamed from regset_xmalloc.
Add 'arch' argument.  Allocate the regset on arch's obstack, not
using xmalloc.
* regset.h (regset_alloc): Update declaration.
* am64-tdep.c (amd64_regset_from_core_section): Update call; pass
gdbarch argument.
* amd64obsd-tdep.c (amd64obsd_regset_from_core_section): Same.
* i386-tdep.c (i386_regset_from_core_section): Same.
* i386nbsd-tdep.c (i386nbsd_aout_regset_from_core_section): Same.
* i386obsd-tdep.c (i386obsd_aout_regset_from_core_section): Same.
* sparc64fbsd-tdep.c (sparc64fbsd_init_abi): Same.
* sparc64nbsd-tdep.c (sparc64nbsd_init_abi): Same.
* sparc64obsd-tdep.c (sparc64obsd_init_abi): Same.
* sparcnbsd-tdep.c (sparc32nbsd_init_abi): Same.

12 files changed:
gdb/ChangeLog
gdb/amd64-tdep.c
gdb/amd64obsd-tdep.c
gdb/i386-tdep.c
gdb/i386nbsd-tdep.c
gdb/i386obsd-tdep.c
gdb/regset.c
gdb/regset.h
gdb/sparc64fbsd-tdep.c
gdb/sparc64nbsd-tdep.c
gdb/sparc64obsd-tdep.c
gdb/sparcnbsd-tdep.c

index 4850e7c6d0246590fd732205ae403c546a72a795..554363fd2a6f21295c0431e021c302f6c462d7bc 100644 (file)
@@ -1,3 +1,22 @@
+2004-05-21  Jim Blandy  <jimb@redhat.com>
+
+       Allocate regset structures in the gdbarch's obstack, not using
+       xmalloc.
+       * regset.c (regset_alloc): Renamed from regset_xmalloc.
+       Add 'arch' argument.  Allocate the regset on arch's obstack, not
+       using xmalloc.
+       * regset.h (regset_alloc): Update declaration.
+       * am64-tdep.c (amd64_regset_from_core_section): Update call; pass
+       gdbarch argument.
+       * amd64obsd-tdep.c (amd64obsd_regset_from_core_section): Same.
+       * i386-tdep.c (i386_regset_from_core_section): Same.
+       * i386nbsd-tdep.c (i386nbsd_aout_regset_from_core_section): Same.
+       * i386obsd-tdep.c (i386obsd_aout_regset_from_core_section): Same.
+       * sparc64fbsd-tdep.c (sparc64fbsd_init_abi): Same.
+       * sparc64nbsd-tdep.c (sparc64nbsd_init_abi): Same.
+       * sparc64obsd-tdep.c (sparc64obsd_init_abi): Same.
+       * sparcnbsd-tdep.c (sparc32nbsd_init_abi): Same.
+
 2004-05-21  Joel Brobecker  <brobecker@gnat.com>
 
        * config/djgpp/fnchange.lst: Undo previous change, was useless.
index a326811f11d3ef3efd65d457fe7d42e5677843b2..8cb9862b7aee5d38291e30f2694d34065705a0ba 100644 (file)
@@ -1074,7 +1074,8 @@ amd64_regset_from_core_section (struct gdbarch *gdbarch,
   if (strcmp (sect_name, ".reg2") == 0 && sect_size == tdep->sizeof_fpregset)
     {
       if (tdep->fpregset == NULL)
-        tdep->fpregset = regset_xmalloc (tdep, amd64_supply_fpregset, NULL);
+        tdep->fpregset = regset_alloc (gdbarch, tdep,
+                                       amd64_supply_fpregset, NULL);
 
       return tdep->fpregset;
     }
index 5ded31d8a05f423709fce2803bb70dbc69ae49b9..01cc559575fe15a589d4ba44809e027e50879942 100644 (file)
@@ -63,7 +63,8 @@ amd64obsd_regset_from_core_section (struct gdbarch *gdbarch,
       && sect_size >= tdep->sizeof_gregset + I387_SIZEOF_FXSAVE)
     {
       if (tdep->gregset == NULL)
-        tdep->gregset = regset_xmalloc (tdep, amd64obsd_supply_regset, NULL);
+        tdep->gregset = regset_alloc (gdbarch, tdep,
+                                      amd64obsd_supply_regset, NULL);
       return tdep->gregset;
     }
 
index 99810598dbfb64a110b16e2c0cd74f30c078b66a..d01dcc5d92066d784eff1ac4d3161d953d18405d 100644 (file)
@@ -1662,7 +1662,8 @@ i386_regset_from_core_section (struct gdbarch *gdbarch,
   if (strcmp (sect_name, ".reg") == 0 && sect_size == tdep->sizeof_gregset)
     {
       if (tdep->gregset == NULL)
-        tdep->gregset = regset_xmalloc (tdep, i386_supply_gregset, NULL);
+        tdep->gregset = regset_alloc (gdbarch, tdep,
+                                      i386_supply_gregset, NULL);
       return tdep->gregset;
     }
 
@@ -1671,7 +1672,8 @@ i386_regset_from_core_section (struct gdbarch *gdbarch,
          && sect_size == I387_SIZEOF_FXSAVE))
     {
       if (tdep->fpregset == NULL)
-        tdep->fpregset = regset_xmalloc (tdep, i386_supply_fpregset, NULL);
+        tdep->fpregset = regset_alloc (gdbarch, tdep,
+                                       i386_supply_fpregset, NULL);
       return tdep->fpregset;
     }
 
index 53dbe8af2abed3034b2087ec0ca05c1ee7716a82..4f214b4f106ba25b47a1119e43fa9c7532639779 100644 (file)
@@ -86,8 +86,8 @@ i386nbsd_aout_regset_from_core_section (struct gdbarch *gdbarch,
       && sect_size >= tdep->sizeof_gregset + I387_SIZEOF_FSAVE)
     {
       if (tdep->gregset == NULL)
-        tdep->gregset
-          = regset_xmalloc (tdep, i386nbsd_aout_supply_regset, NULL);
+        tdep->gregset = regset_alloc (gdbarch, tdep,
+                                      i386nbsd_aout_supply_regset, NULL);
       return tdep->gregset;
     }
 
index a21faabab821c785d8b2bfa6403aa83ebf7c5c43..43257efed1ccaa42aee3cee47619970f351f75fa 100644 (file)
@@ -141,8 +141,8 @@ i386obsd_aout_regset_from_core_section (struct gdbarch *gdbarch,
       && sect_size >= tdep->sizeof_gregset + I387_SIZEOF_FSAVE)
     {
       if (tdep->gregset == NULL)
-        tdep->gregset
-          = regset_xmalloc (tdep, i386obsd_aout_supply_regset, NULL);
+        tdep->gregset = regset_alloc (gdbarch, tdep,
+                                      i386obsd_aout_supply_regset, NULL);
       return tdep->gregset;
     }
 
index 2ab40b87ebcb3ea181e0bc1deb32c4338d65a2ef..7392676965d097e985db57577a5e9417c5c9c8bf 100644 (file)
 
 
 struct regset *
-regset_xmalloc (const void *descr,
-                supply_regset_ftype *supply_regset,
-                collect_regset_ftype *collect_regset)
+regset_alloc (struct gdbarch *arch,
+              const void *descr,
+              supply_regset_ftype *supply_regset,
+              collect_regset_ftype *collect_regset)
 {
-  struct regset *r = (struct regset *) xmalloc (sizeof (*r));
+  struct regset *r
+    = (struct regset *) gdbarch_obstack_zalloc (arch, sizeof (*r));
 
   r->descr = descr;
   r->supply_regset = supply_regset;
index b787c72a9be99f60f1e9232573c2b6efeb054033..e64c48bc0e10267ecfa74887440bc9cee128f1c8 100644 (file)
@@ -51,10 +51,11 @@ struct regset
    function is COLLECT_REGSET.  If the regset has no collect function,
    pass NULL for COLLECT_REGSET.
 
-   The object returned is allocated using xmalloc.  */
-extern struct regset *regset_xmalloc (const void *descr,
-                                      supply_regset_ftype *supply_regset,
-                                      collect_regset_ftype *collect_regset);
+   The object returned is allocated on ARCH's obstack.  */
+extern struct regset *regset_alloc (struct gdbarch *arch,
+                                    const void *descr,
+                                    supply_regset_ftype *supply_regset,
+                                    collect_regset_ftype *collect_regset);
 
 
 #endif /* regset.h */
index 7864ffa0ccec4191b986a90e57e56ce11d9516e8..bcb9bde023605e97c9a0b474b16e57d7a5574b6c 100644 (file)
@@ -199,11 +199,12 @@ sparc64fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
-  tdep->gregset
-    = regset_xmalloc (&sparc64fbsd_gregset, sparc64fbsd_supply_gregset, NULL);
+  tdep->gregset = regset_alloc (gdbarch, &sparc64fbsd_gregset,
+                                sparc64fbsd_supply_gregset, NULL);
   tdep->sizeof_gregset = 256;
 
-  tdep->fpregset = regset_xmalloc (NULL, sparc64fbsd_supply_fpregset, NULL);
+  tdep->fpregset = regset_alloc (gdbarch, NULL,
+                                 sparc64fbsd_supply_fpregset, NULL);
   tdep->sizeof_fpregset = 272;
 
   frame_unwind_append_sniffer (gdbarch, sparc64fbsd_sigtramp_frame_sniffer);
index 25a0074298cf8c92e82a624fcb1ed15bd5a67b8d..1d43d02b5e33bec9d1a9f80e5274fdfea682cd66 100644 (file)
@@ -226,11 +226,12 @@ sparc64nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
-  tdep->gregset
-    = regset_xmalloc (&sparc64nbsd_gregset, sparc64nbsd_supply_gregset, NULL);
+  tdep->gregset = regset_alloc (gdbarch, &sparc64nbsd_gregset,
+                                sparc64nbsd_supply_gregset, NULL);
   tdep->sizeof_gregset = 160;
 
-  tdep->fpregset = regset_xmalloc (NULL, sparc64nbsd_supply_fpregset, NULL);
+  tdep->fpregset = regset_alloc (gdbarch, NULL,
+                                 sparc64nbsd_supply_fpregset, NULL);
   tdep->sizeof_fpregset = 272;
 
   frame_unwind_append_sniffer (gdbarch, sparc64nbsd_sigtramp_frame_sniffer);
index b6bd88c1e055751bb4a21250edabe116884ef941..e34df923a54fdb4651920de32cc560c12544f49d 100644 (file)
@@ -184,9 +184,8 @@ sparc64obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
-  tdep->gregset = regset_xmalloc (&sparc64obsd_core_gregset, 
-                                  sparc64obsd_supply_gregset,
-                                  NULL);
+  tdep->gregset = regset_alloc (gdbarch, &sparc64obsd_core_gregset, 
+                                sparc64obsd_supply_gregset, NULL);
   tdep->sizeof_gregset = 832;
 
   frame_unwind_append_sniffer (gdbarch, sparc64obsd_sigtramp_frame_sniffer);
index ab6003cbb0f2f313702abbcb32394d54dc0cb9aa..90270ed95d4d4897b586fcf47fa22a22ab1c02d2 100644 (file)
@@ -274,11 +274,12 @@ sparc32nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
   set_gdbarch_long_double_bit (gdbarch, 64);
   set_gdbarch_long_double_format (gdbarch, &floatformat_ieee_double_big);
 
-  tdep->gregset
-    = regset_xmalloc (&sparc32nbsd_gregset, sparc32nbsd_supply_gregset, NULL);
+  tdep->gregset = regset_alloc (gdbarch, &sparc32nbsd_gregset,
+                                sparc32nbsd_supply_gregset, NULL);
   tdep->sizeof_gregset = 20 * 4;
 
-  tdep->fpregset = regset_xmalloc (NULL, sparc32nbsd_supply_fpregset, NULL);
+  tdep->fpregset = regset_alloc (gdbarch, NULL,
+                                 sparc32nbsd_supply_fpregset, NULL);
   tdep->sizeof_fpregset = 33 * 4;
 
   frame_unwind_append_sniffer (gdbarch, sparc32nbsd_sigtramp_frame_sniffer);