From: Elena Zannoni <ezannoni@redhat.com>
To: Kevin Buettner <kevinb@redhat.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: [RFA] dwarf2expr.c: Fix some stack [re]allocation problems
Date: Wed, 07 May 2003 22:57:00 -0000 [thread overview]
Message-ID: <16057.37022.923861.785213@localhost.redhat.com> (raw)
In-Reply-To: <1030507223951.ZM32198@localhost.localdomain>
Kevin Buettner writes:
> Ping!
>
> --- Forwarded mail from Kevin Buettner <kevinb@redhat.com>
>
> Date: Wed, 23 Apr 2003 16:45:26 -0700
> From: Kevin Buettner <kevinb@redhat.com>
> To: gdb-patches@sources.redhat.com
> Subject: [RFA] dwarf2expr.c: Fix some stack [re]allocation problems
>
> The patch below fixes some problems with the dwarf expression stack.
>
> First, the stack is not being initialized correctly. The
> ``stack_len'' member indicates the position of the top of the stack
> and it was being set to 10. This value should be zero, and, as a
> consequence, none of the underflow checking code was actually working
> properly. Furthermore, the field which indicates the amount of space
> actually allocated wasn't being initialized at all!
>
> The function which grows the stack also has a bug. It uses a loop
> which doubles the new size so long as that size isn't yet large enough
> to accomodate the new space request. The problem with this is that if
> the size starts out at zero, the loop will never terminate. Computing
> this sort of thing with a loop is silly anyway, so I've simplified the
> mechanism used to allocate more space. It seems unlikely that the
> DWARF 2 expression stack will grow very quickly, hence the new code is
> conservative and allocates a mere 10 elements (at a time) more than
> required.
>
> Okay?
Sure.
elena
>
> * dwarf2expr.c (new_dwarf_expr_context): Set ``stack_len'' to
> correctly indicate an empty stack and ``stack_allocated'' to the
> indicate the number of elements initially allocated.
> (dwarf_expr_grow_stack): Simplify method for computing new
> stack size. Don't loop infinitely if ``stack_len'' is zero.
>
> Index: dwarf2expr.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/dwarf2expr.c,v
> retrieving revision 1.6
> diff -u -p -r1.6 dwarf2expr.c
> --- dwarf2expr.c 13 Apr 2003 15:53:44 -0000 1.6
> +++ dwarf2expr.c 23 Apr 2003 23:19:38 -0000
> @@ -39,8 +39,9 @@ new_dwarf_expr_context (void)
> {
> struct dwarf_expr_context *retval;
> retval = xcalloc (1, sizeof (struct dwarf_expr_context));
> - retval->stack_len = 10;
> - retval->stack = xmalloc (10 * sizeof (CORE_ADDR));
> + retval->stack_len = 0;
> + retval->stack_allocated = 10;
> + retval->stack = xmalloc (retval->stack_allocated * sizeof (CORE_ADDR));
> return retval;
> }
>
> @@ -61,12 +62,10 @@ dwarf_expr_grow_stack (struct dwarf_expr
> {
> if (ctx->stack_len + need > ctx->stack_allocated)
> {
> - size_t templen = ctx->stack_len * 2;
> - while (templen < (ctx->stack_len + need))
> - templen *= 2;
> + size_t newlen = ctx->stack_len + need + 10;
> ctx->stack = xrealloc (ctx->stack,
> - templen * sizeof (CORE_ADDR));
> - ctx->stack_allocated = templen;
> + newlen * sizeof (CORE_ADDR));
> + ctx->stack_allocated = newlen;
> }
> }
>
>
>
> --- End of forwarded mail from Kevin Buettner <kevinb@redhat.com>
next prev parent reply other threads:[~2003-05-07 22:57 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-24 1:05 Kevin Buettner
2003-05-07 22:39 ` Kevin Buettner
2003-05-07 22:57 ` Elena Zannoni [this message]
[not found] ` <ezannoni@redhat.com>
2003-05-14 22:46 ` Kevin Buettner
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=16057.37022.923861.785213@localhost.redhat.com \
--to=ezannoni@redhat.com \
--cc=gdb-patches@sources.redhat.com \
--cc=kevinb@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