Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jim Blandy <jimb@redhat.com>
To: gdb-patches@sources.redhat.com
Subject: RFA: allocate regsets on gdbarch obstack
Date: Thu, 20 May 2004 06:58:00 -0000	[thread overview]
Message-ID: <vt2zn83y4fs.fsf@zenia.home> (raw)

2004-05-20  Jim Blandy  <jimb@redhat.com>

	Allocate regset structures in the gdbarch's obstack, not using
	xmalloc.
	* regset.c (regset_obstack_alloc): Renamed from regset_xmalloc.
	Add 'arch' argument.  Allocate the regset on arch's obstack, not
	using xmalloc.
	* regset.h (regset_obstack_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.

Index: gdb/regset.h
===================================================================
RCS file: /cvs/src/src/gdb/regset.h,v
retrieving revision 1.2
diff -c -p -r1.2 regset.h
*** gdb/regset.h	20 May 2004 00:53:06 -0000	1.2
--- gdb/regset.h	20 May 2004 05:19:23 -0000
*************** struct regset
*** 51,60 ****
     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 (void *descr,
!                                       supply_regset_ftype *supply_regset,
!                                       collect_regset_ftype *collect_regset);
  
  
  #endif /* regset.h */
--- 51,62 ----
     function is COLLECT_REGSET.  If the regset has no collect function,
     pass NULL for COLLECT_REGSET.
  
!    The object returned is allocated on ARCH's obstack.  */
! extern struct regset *(regset_obstack_alloc
!                        (struct gdbarch *arch,
!                         void *descr,
!                         supply_regset_ftype *supply_regset,
!                         collect_regset_ftype *collect_regset));
  
  
  #endif /* regset.h */
Index: gdb/regset.c
===================================================================
RCS file: /cvs/src/src/gdb/regset.c,v
retrieving revision 1.1
diff -c -p -r1.1 regset.c
*** gdb/regset.c	20 May 2004 00:53:06 -0000	1.1
--- gdb/regset.c	20 May 2004 05:19:23 -0000
***************
*** 25,35 ****
  
  
  struct regset *
! regset_xmalloc (void *descr,
!                 supply_regset_ftype *supply_regset,
!                 collect_regset_ftype *collect_regset)
  {
!   struct regset *r = (struct regset *) xmalloc (sizeof (*r));
  
    r->descr = descr;
    r->supply_regset = supply_regset;
--- 25,37 ----
  
  
  struct regset *
! regset_obstack_alloc (struct gdbarch *arch,
!                       void *descr,
!                       supply_regset_ftype *supply_regset,
!                       collect_regset_ftype *collect_regset)
  {
!   struct regset *r
!     = (struct regset *) gdbarch_obstack_zalloc (arch, sizeof (*r));
  
    r->descr = descr;
    r->supply_regset = supply_regset;
Index: gdb/amd64-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/amd64-tdep.c,v
retrieving revision 1.11
diff -c -p -r1.11 amd64-tdep.c
*** gdb/amd64-tdep.c	20 May 2004 00:53:06 -0000	1.11
--- gdb/amd64-tdep.c	20 May 2004 05:19:21 -0000
*************** amd64_regset_from_core_section (struct g
*** 1074,1080 ****
    if (strcmp (sect_name, ".reg2") == 0 && sect_size == tdep->sizeof_fpregset)
      {
        if (tdep->fpregset == NULL)
!         tdep->fpregset = regset_xmalloc (tdep, amd64_supply_fpregset, NULL);
  
        return tdep->fpregset;
      }
--- 1074,1081 ----
    if (strcmp (sect_name, ".reg2") == 0 && sect_size == tdep->sizeof_fpregset)
      {
        if (tdep->fpregset == NULL)
!         tdep->fpregset
!           = regset_obstack_alloc (gdbarch, tdep, amd64_supply_fpregset, NULL);
  
        return tdep->fpregset;
      }
Index: gdb/amd64obsd-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/amd64obsd-tdep.c,v
retrieving revision 1.11
diff -c -p -r1.11 amd64obsd-tdep.c
*** gdb/amd64obsd-tdep.c	20 May 2004 00:53:06 -0000	1.11
--- gdb/amd64obsd-tdep.c	20 May 2004 05:19:21 -0000
*************** amd64obsd_regset_from_core_section (stru
*** 63,69 ****
        && sect_size >= tdep->sizeof_gregset + I387_SIZEOF_FXSAVE)
      {
        if (tdep->gregset == NULL)
!         tdep->gregset = regset_xmalloc (tdep, amd64obsd_supply_regset, NULL);
        return tdep->gregset;
      }
  
--- 63,70 ----
        && sect_size >= tdep->sizeof_gregset + I387_SIZEOF_FXSAVE)
      {
        if (tdep->gregset == NULL)
!         tdep->gregset = regset_obstack_alloc (gdbarch, tdep,
!                                               amd64obsd_supply_regset, NULL);
        return tdep->gregset;
      }
  
Index: gdb/i386-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/i386-tdep.c,v
retrieving revision 1.192
diff -c -p -r1.192 i386-tdep.c
*** gdb/i386-tdep.c	20 May 2004 00:53:06 -0000	1.192
--- gdb/i386-tdep.c	20 May 2004 05:19:22 -0000
*************** i386_regset_from_core_section (struct gd
*** 1662,1668 ****
    if (strcmp (sect_name, ".reg") == 0 && sect_size == tdep->sizeof_gregset)
      {
        if (tdep->gregset == NULL)
!         tdep->gregset = regset_xmalloc (tdep, i386_supply_gregset, NULL);
        return tdep->gregset;
      }
  
--- 1662,1669 ----
    if (strcmp (sect_name, ".reg") == 0 && sect_size == tdep->sizeof_gregset)
      {
        if (tdep->gregset == NULL)
!         tdep->gregset = regset_obstack_alloc (gdbarch, tdep,
!                                               i386_supply_gregset, NULL);
        return tdep->gregset;
      }
  
*************** i386_regset_from_core_section (struct gd
*** 1671,1677 ****
  	  && sect_size == I387_SIZEOF_FXSAVE))
      {
        if (tdep->fpregset == NULL)
!         tdep->fpregset = regset_xmalloc (tdep, i386_supply_fpregset, NULL);
        return tdep->fpregset;
      }
  
--- 1672,1679 ----
  	  && sect_size == I387_SIZEOF_FXSAVE))
      {
        if (tdep->fpregset == NULL)
!         tdep->fpregset = regset_obstack_alloc (gdbarch, tdep, 
!                                                i386_supply_fpregset, NULL);
        return tdep->fpregset;
      }
  
Index: gdb/i386nbsd-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/i386nbsd-tdep.c,v
retrieving revision 1.25
diff -c -p -r1.25 i386nbsd-tdep.c
*** gdb/i386nbsd-tdep.c	20 May 2004 00:53:06 -0000	1.25
--- gdb/i386nbsd-tdep.c	20 May 2004 05:19:22 -0000
*************** i386nbsd_aout_regset_from_core_section (
*** 87,93 ****
      {
        if (tdep->gregset == NULL)
          tdep->gregset
!           = regset_xmalloc (tdep, i386nbsd_aout_supply_regset, NULL);
        return tdep->gregset;
      }
  
--- 87,94 ----
      {
        if (tdep->gregset == NULL)
          tdep->gregset
!           = regset_obstack_alloc (gdbarch, tdep,
!                                   i386nbsd_aout_supply_regset, NULL);
        return tdep->gregset;
      }
  
Index: gdb/i386obsd-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/i386obsd-tdep.c,v
retrieving revision 1.16
diff -c -p -r1.16 i386obsd-tdep.c
*** gdb/i386obsd-tdep.c	20 May 2004 00:53:06 -0000	1.16
--- gdb/i386obsd-tdep.c	20 May 2004 05:19:23 -0000
*************** i386obsd_aout_regset_from_core_section (
*** 142,148 ****
      {
        if (tdep->gregset == NULL)
          tdep->gregset
!           = regset_xmalloc (tdep, i386obsd_aout_supply_regset, NULL);
        return tdep->gregset;
      }
  
--- 142,149 ----
      {
        if (tdep->gregset == NULL)
          tdep->gregset
!           = regset_obstack_alloc (gdbarch, tdep,
!                                   i386obsd_aout_supply_regset, NULL);
        return tdep->gregset;
      }
  
Index: gdb/sparc64fbsd-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sparc64fbsd-tdep.c,v
retrieving revision 1.7
diff -c -p -r1.7 sparc64fbsd-tdep.c
*** gdb/sparc64fbsd-tdep.c	20 May 2004 00:53:06 -0000	1.7
--- gdb/sparc64fbsd-tdep.c	20 May 2004 05:19:23 -0000
*************** sparc64fbsd_init_abi (struct gdbarch_inf
*** 200,209 ****
    struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
  
    tdep->gregset
!     = regset_xmalloc (&sparc64fbsd_gregset, sparc64fbsd_supply_gregset, NULL);
    tdep->sizeof_gregset = 256;
  
!   tdep->fpregset = regset_xmalloc (NULL, sparc64fbsd_supply_fpregset, NULL);
    tdep->sizeof_fpregset = 272;
  
    frame_unwind_append_sniffer (gdbarch, sparc64fbsd_sigtramp_frame_sniffer);
--- 200,211 ----
    struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
  
    tdep->gregset
!     = regset_obstack_alloc (gdbarch, &sparc64fbsd_gregset,
!                             sparc64fbsd_supply_gregset, NULL);
    tdep->sizeof_gregset = 256;
  
!   tdep->fpregset = regset_obstack_alloc (gdbarch, NULL,
!                                          sparc64fbsd_supply_fpregset, NULL);
    tdep->sizeof_fpregset = 272;
  
    frame_unwind_append_sniffer (gdbarch, sparc64fbsd_sigtramp_frame_sniffer);
Index: gdb/sparc64nbsd-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sparc64nbsd-tdep.c,v
retrieving revision 1.8
diff -c -p -r1.8 sparc64nbsd-tdep.c
*** gdb/sparc64nbsd-tdep.c	20 May 2004 00:53:06 -0000	1.8
--- gdb/sparc64nbsd-tdep.c	20 May 2004 05:19:23 -0000
*************** sparc64nbsd_init_abi (struct gdbarch_inf
*** 227,236 ****
    struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
  
    tdep->gregset
!     = regset_xmalloc (&sparc64nbsd_gregset, sparc64nbsd_supply_gregset, NULL);
    tdep->sizeof_gregset = 160;
  
!   tdep->fpregset = regset_xmalloc (NULL, sparc64nbsd_supply_fpregset, NULL);
    tdep->sizeof_fpregset = 272;
  
    frame_unwind_append_sniffer (gdbarch, sparc64nbsd_sigtramp_frame_sniffer);
--- 227,238 ----
    struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
  
    tdep->gregset
!     = regset_obstack_alloc (gdbarch, &sparc64nbsd_gregset,
!                             sparc64nbsd_supply_gregset, NULL);
    tdep->sizeof_gregset = 160;
  
!   tdep->fpregset = regset_obstack_alloc (gdbarch, NULL,
!                                          sparc64nbsd_supply_fpregset, NULL);
    tdep->sizeof_fpregset = 272;
  
    frame_unwind_append_sniffer (gdbarch, sparc64nbsd_sigtramp_frame_sniffer);
Index: gdb/sparc64obsd-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sparc64obsd-tdep.c,v
retrieving revision 1.4
diff -c -p -r1.4 sparc64obsd-tdep.c
*** gdb/sparc64obsd-tdep.c	20 May 2004 00:53:06 -0000	1.4
--- gdb/sparc64obsd-tdep.c	20 May 2004 05:19:23 -0000
*************** sparc64obsd_init_abi (struct gdbarch_inf
*** 184,192 ****
  {
    struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
  
!   tdep->gregset = regset_xmalloc (&sparc64obsd_core_gregset, 
!                                   sparc64obsd_supply_gregset,
!                                   NULL);
    tdep->sizeof_gregset = 832;
  
    frame_unwind_append_sniffer (gdbarch, sparc64obsd_sigtramp_frame_sniffer);
--- 184,193 ----
  {
    struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
  
!   tdep->gregset = regset_obstack_alloc (gdbarch, 
!                                         &sparc64obsd_core_gregset, 
!                                         sparc64obsd_supply_gregset,
!                                         NULL);
    tdep->sizeof_gregset = 832;
  
    frame_unwind_append_sniffer (gdbarch, sparc64obsd_sigtramp_frame_sniffer);
Index: gdb/sparcnbsd-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sparcnbsd-tdep.c,v
retrieving revision 1.19
diff -c -p -r1.19 sparcnbsd-tdep.c
*** gdb/sparcnbsd-tdep.c	20 May 2004 00:53:06 -0000	1.19
--- gdb/sparcnbsd-tdep.c	20 May 2004 05:19:23 -0000
*************** sparc32nbsd_init_abi (struct gdbarch_inf
*** 275,284 ****
    set_gdbarch_long_double_format (gdbarch, &floatformat_ieee_double_big);
  
    tdep->gregset
!     = regset_xmalloc (&sparc32nbsd_gregset, sparc32nbsd_supply_gregset, NULL);
    tdep->sizeof_gregset = 20 * 4;
  
!   tdep->fpregset = regset_xmalloc (NULL, sparc32nbsd_supply_fpregset, NULL);
    tdep->sizeof_fpregset = 33 * 4;
  
    frame_unwind_append_sniffer (gdbarch, sparc32nbsd_sigtramp_frame_sniffer);
--- 275,286 ----
    set_gdbarch_long_double_format (gdbarch, &floatformat_ieee_double_big);
  
    tdep->gregset
!     = regset_obstack_alloc (gdbarch, &sparc32nbsd_gregset,
!                             sparc32nbsd_supply_gregset, NULL);
    tdep->sizeof_gregset = 20 * 4;
  
!   tdep->fpregset = regset_obstack_alloc (gdbarch, NULL,
!                                          sparc32nbsd_supply_fpregset, NULL);
    tdep->sizeof_fpregset = 33 * 4;
  
    frame_unwind_append_sniffer (gdbarch, sparc32nbsd_sigtramp_frame_sniffer);


             reply	other threads:[~2004-05-20  6:58 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-05-20  6:58 Jim Blandy [this message]
2004-05-20 12:32 ` Mark Kettenis
2004-05-21 22:15   ` Jim Blandy
2004-05-22 12:35     ` Mark Kettenis
2004-05-21 22:16   ` Jim Blandy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=vt2zn83y4fs.fsf@zenia.home \
    --to=jimb@redhat.com \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox