This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH v5 09/15] vla: resolve dynamic bounds if value contents is a constant byte-sequence
- From: Joel Brobecker <brobecker at adacore dot com>
- To: Sanimir Agovic <sanimir dot agovic at intel dot com>
- Cc: tromey at redhat dot com, keven dot boell at intel dot com, gdb-patches at sourceware dot org
- Date: Thu, 13 Mar 2014 17:00:55 +0100
- Subject: Re: [PATCH v5 09/15] vla: resolve dynamic bounds if value contents is a constant byte-sequence
- Authentication-results: sourceware.org; auth=none
- References: <1391704056-25246-1-git-send-email-sanimir dot agovic at intel dot com> <1391704056-25246-10-git-send-email-sanimir dot agovic at intel dot com> <20140228170941 dot GB16479 at adacore dot com>
> > 2013-11-26 Sanimir Agovic <sanimir.agovic@intel.com>
> > Keven Boell <keven.boell@intel.com>
> >
> > * findvar.c (default_read_var_value): Resolve dynamic bounds if location
> > points to a constant blob.
>
> Would you mind explaining this change a little more; perhaps using
> some example code would help me understand why we want to resolve
> dynamic types in this case (and also only in this case)?
I see. It took me a while to understand what you are saying, but
I do, now. It's one of these situations where it's almost a shame
that some case branches return, while others don't, and fallback
on something that happens to take care of dynamicity. Oh well, I have
no better proposal at the moment, so the current approach is fine
with me.
Question for you: Shouldn't we be doing the same for LOC_CONST?
Thank you,
> > gdb/findvar.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/gdb/findvar.c b/gdb/findvar.c
> > index ec6afd6..a543dc4 100644
> > --- a/gdb/findvar.c
> > +++ b/gdb/findvar.c
> > @@ -468,6 +468,9 @@ default_read_var_value (struct symbol *var, struct frame_info *frame)
> > return v;
> >
> > case LOC_CONST_BYTES:
> > + if (is_dynamic_type (type))
> > + /* Value is a constant byte-sequence and needs no memory access. */
> > + type = resolve_dynamic_type (type, /* Unused address. */ 0);
> > v = allocate_value (type);
> > memcpy (value_contents_raw (v), SYMBOL_VALUE_BYTES (var),
> > TYPE_LENGTH (type));
> > --
> > 1.8.4.2
>
> --
> Joel
--
Joel