Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Phil Muldoon <pmuldoon@redhat.com>
To: matt rice <ratmice@gmail.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 2/7] [python] API for macros: memory management quirks.
Date: Tue, 30 Aug 2011 11:47:00 -0000	[thread overview]
Message-ID: <m3ei03unmx.fsf@redhat.com> (raw)
In-Reply-To: <1314198654-9008-3-git-send-email-ratmice@gmail.com> (matt rice's	message of "Wed, 24 Aug 2011 08:10:49 -0700")

matt rice <ratmice@gmail.com> writes:

> diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
> index f66c1d9..c56f431 100644
> --- a/gdb/dwarf2read.c
> +++ b/gdb/dwarf2read.c
> @@ -14351,8 +14351,7 @@ macro_start_file (int file, int line,
>    /* We don't create a macro table for this compilation unit
>       at all until we actually get a filename.  */
>    if (! pending_macros)
> -    pending_macros = new_macro_table (&objfile->objfile_obstack,
> -                                      objfile->macro_cache);
> +    pending_macros = new_macro_table (objfile, macro_table_type_from_objfile);

The comments in macrotab.h need to be updated with the new parameter
info.  This and others.

This is code I am not very sure of, having never dabbled in this area.
So this review would benefit from a maintainer that is more familiar
with this code.  But what benefit do we accrue now that we purely store
macros in the objfile's obstack over (the now defunct) bcache?  Was
there an underlying reason for dual this you discovered?  It seems odd that
in the pre-patched version that struct macro_table had two strategies
for this. Contextually, why did you elect to use the obstack in the
objfile, instead of the previous ancillary related structure?

> diff --git a/gdb/macrotab.c b/gdb/macrotab.c
> index efcf835..b2825d2 100644
> --- a/gdb/macrotab.c
> +++ b/gdb/macrotab.c
> @@ -35,13 +35,10 @@
>  
>  struct macro_table
>  {
> -  /* The obstack this table's data should be allocated in, or zero if
> -     we should use xmalloc.  */
> -  struct obstack *obstack;
> -
> -  /* The bcache we should use to hold macro names, argument names, and
> -     definitions, or zero if we should use xmalloc.  */
> -  struct bcache *bcache;
> +  /* The objfile who's obstack this table's data should be allocated in,
> +     and bcache we should use to hold macro names, argument
> +     names, and definitions, or zero if we should use xmalloc. */
> +  struct objfile *objfile;


Comment seems wrong, as bcache data structure no longer exists.
Additionally, (not in the code, but in your email), a narrative why we
are removing the bcache is needed.  
  


>  static void
>  macro_bcache_free (struct macro_table *t, void *obj)
>  {
> -  if (t->bcache)
> +  if (t->objfile)
>      /* There are cases where we need to remove entries from a macro
>         table, even when reading debugging information.  This should be
>         rare, and there's no easy way to free data from a bcache, so we
> @@ -147,6 +146,12 @@ macro_bcache_free (struct macro_table *t, void *obj)
>      xfree (obj);
>  }

Updated comments needed.  Referral to bcache.
  
> +/* Create a new, empty macro table.  Allocate it in OBJFILE's obstack,
> +   or use xmalloc if OBJFILE is zero.  Use OBJFILE's bcache to store
> +   all macro names, arguments, definitions, and anything else that
> +   might be the same amongst compilation units in an executable file;
> +   if OBJFILE is zero, don't cache these things.
> +
> +   Note that, if OBJFILE is non-zero, then removing information from the
> +   table may leak memory.  Neither obstacks nor bcaches really allow
> +   you to remove information, so although we can update the data
> +   structure to record the change, we can't free the old data.
> +   At the moment, since we only provide obstacks and bcaches for macro
> +   tables for symtabs, this isn't a problem; only odd debugging
> +   information makes a definition and then deletes it at the same
> +   source location (although 'gcc -DFOO -UFOO -DFOO=2' does do that
> +   in GCC 4.1.2.).  */
> +struct macro_table *new_macro_table (struct objfile *objfile,
> +				     enum macro_table_type table_type);

Comments need to be updated.
  
Cheers,

Phil


  parent reply	other threads:[~2011-08-30 11:47 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-24 15:11 [PATCH 0/7] [python] API for macros matt rice
2011-08-24 15:11 ` [PATCH 1/7] [python] API for macros: abort or continuing macro iterators matt rice
2011-08-26 20:23   ` Tom Tromey
2011-08-30 11:10   ` Phil Muldoon
2011-09-01 21:48     ` Matt Rice
2011-08-24 15:11 ` [PATCH 5/7] [python] API for macros: gdb.Objfile symtabs method matt rice
2011-08-30 13:08   ` Phil Muldoon
2011-09-01 23:18     ` Matt Rice
2011-09-02  1:07       ` Paul_Koning
2011-08-30 17:34   ` Tom Tromey
2011-09-02  0:56     ` Matt Rice
2011-08-24 15:11 ` [PATCH 2/7] [python] API for macros: memory management quirks matt rice
2011-08-26 20:40   ` Tom Tromey
2011-08-30 11:47   ` Phil Muldoon [this message]
2011-09-01 22:46     ` Matt Rice
2011-08-24 15:12 ` [PATCH 7/7] [python] API for macros: Add tests matt rice
2011-08-30 13:12   ` Phil Muldoon
2011-08-30 15:54   ` Tom Tromey
2011-08-24 15:12 ` [PATCH 6/7] [python] API for macros: Add docs matt rice
2011-08-24 20:10   ` Eli Zaretskii
2011-08-25 12:33     ` Matt Rice
2011-08-25 17:36       ` Eli Zaretskii
2011-08-26  8:04         ` Matt Rice
2011-08-26 10:42           ` Eli Zaretskii
2011-08-26 11:17             ` Matt Rice
2011-08-26 12:08               ` Eli Zaretskii
2011-08-26 14:06                 ` Matt Rice
2011-08-26 15:05                   ` Eli Zaretskii
2011-08-24 15:12 ` [PATCH 3/7] [python] API for macros: Add gdb.Macro class matt rice
2011-08-30 12:45   ` Phil Muldoon
2011-09-01 22:57     ` Matt Rice
2011-08-24 15:12 ` [PATCH 4/7] [python] API for macros: Add methods to get a gdb.Macro matt rice
2011-08-30 13:04   ` Phil Muldoon
2011-08-30 17:41     ` Tom Tromey
2011-08-30 20:28       ` Phil Muldoon
2011-08-30 20:35         ` Phil Muldoon
2011-09-01 23:13           ` Matt Rice
2011-09-02  1:15             ` Paul_Koning
2011-09-02 10:04               ` Paul_Koning
2011-09-02 12:04             ` Phil Muldoon
2011-08-30 20:38         ` Tom Tromey
2011-08-30 20:58           ` Phil Muldoon
2011-08-30  9:44 ` [PATCH 0/7] [python] API for macros Phil Muldoon
2011-09-01 21:33   ` Matt Rice

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=m3ei03unmx.fsf@redhat.com \
    --to=pmuldoon@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=ratmice@gmail.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