From: "Agovic, Sanimir" <sanimir.agovic@intel.com>
To: 'Tom Tromey' <tromey@redhat.com>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: RE: [PATCH 05/10] vla: allow side effects for sizeof argument
Date: Fri, 25 Oct 2013 08:13:00 -0000 [thread overview]
Message-ID: <0377C58828D86C4588AEEC42FC3B85A71769F292@IRSMSX105.ger.corp.intel.com> (raw)
In-Reply-To: <87d2mua1gi.fsf@fleche.redhat.com>
Thanks for your review.
I avoid to re-send the complete patch series, thus see my
alternative proposal below. Once I receive more feedback
I will re-publish my patch series including this fix if
applicable.
Meanwhile you can track our latest development efforts on
http://intel-gdb.github.io/ branch vla-c99.
-Sanimir
vla: allow side effects for subscripts in the sizeof operator
C99 requires the sizeof operator to be evaluated at runtime to retrieve
the size of the vla, reflect this behavior in gdb.
1| void foo (size_t n, int vla[n][n]) {
2| }
(gdb) p sizeof(vla[0])
yields N.
2013-10-18 Sanimir Agovic <sanimir.agovic@intel.com>
Keven Boell <keven.boell@intel.com>
* eval.c (evaluate_subexp_for_sizeof): Allow side effects for
subscripts in the sizeof operator.
Change-Id: I945e8a259e850cc0470faa742a0d2191122ef37b
diff --git a/gdb/eval.c b/gdb/eval.c
index ab3cb95..255ea09 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -3054,6 +3054,13 @@ evaluate_subexp_for_sizeof (struct expression *exp, int *pos)
return
value_from_longest (size_type, (LONGEST) TYPE_LENGTH (type));
+ case BINOP_SUBSCRIPT:
+ /* In case of a variable length array we need to evaluate the subscript
+ with side effects to correcly infere the size. */
+ val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
+ return value_from_longest (size_type,
+ (LONGEST) TYPE_LENGTH (value_type (val)));
+
default:
val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
return value_from_longest (size_type,
> -----Original Message-----
> From: Tom Tromey [mailto:tromey@redhat.com]
> Sent: Thursday, October 24, 2013 09:55 PM
> To: Agovic, Sanimir
> Cc: gdb-patches@sourceware.org
> Subject: Re: [PATCH 05/10] vla: allow side effects for sizeof argument
>
> >>>>> "Sanimir" == Sanimir Agovic <sanimir.agovic@intel.com> writes:
>
> Sanimir> C99 requires the sizeof operator to be evaluated at runtime to compute
> Sanimir> the size of the vla, reflect this behavior in gdb.
>
> Sanimir> - val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
> Sanimir> + val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
>
> I think this will do the wrong thing for cases like (assuming "int x"):
>
> (gdb) print sizeof (x++)
>
> I think some other approach will be needed for this patch.
>
> Tom
Intel GmbH
Dornacher Strasse 1
85622 Feldkirchen/Muenchen, Deutschland
Sitz der Gesellschaft: Feldkirchen bei Muenchen
Geschaeftsfuehrer: Christian Lamprechter, Hannes Schwaderer, Douglas Lusk
Registergericht: Muenchen HRB 47456
Ust.-IdNr./VAT Registration No.: DE129385895
Citibank Frankfurt a.M. (BLZ 502 109 00) 600119052
next prev parent reply other threads:[~2013-10-25 8:13 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-21 14:40 C99 variable length array support Sanimir Agovic
2013-10-21 14:40 ` [PATCH 05/10] vla: allow side effects for sizeof argument Sanimir Agovic
2013-10-24 19:55 ` Tom Tromey
2013-10-25 8:13 ` Agovic, Sanimir [this message]
2013-10-28 21:00 ` Tom Tromey
2013-11-18 9:37 ` Agovic, Sanimir
2013-11-18 15:56 ` Tom Tromey
2013-11-20 12:18 ` Agovic, Sanimir
2013-11-19 17:08 ` Pedro Alves
2013-11-20 12:47 ` Agovic, Sanimir
2013-11-20 13:24 ` Pedro Alves
2013-10-21 14:40 ` [PATCH 03/10] vla: enable sizeof operator to work with variable length arrays Sanimir Agovic
2013-11-07 19:10 ` Tom Tromey
2013-10-21 14:40 ` [PATCH 06/10] vla: update type from newly created value Sanimir Agovic
2013-11-07 20:56 ` Tom Tromey
2013-11-20 7:56 ` Agovic, Sanimir
2013-11-20 11:02 ` Pedro Alves
2013-11-20 13:08 ` Agovic, Sanimir
2013-11-21 18:50 ` Pedro Alves
2013-11-23 19:27 ` Doug Evans
2013-10-21 14:40 ` [PATCH 04/10] vla: enable sizeof operator for indirection Sanimir Agovic
2013-11-07 19:57 ` Tom Tromey
2013-10-21 14:40 ` [PATCH 01/10] vla: introduce new bound type abstraction adapt uses Sanimir Agovic
2013-11-07 19:00 ` Tom Tromey
2013-11-18 11:15 ` Agovic, Sanimir
2013-10-21 14:40 ` [PATCH 08/10] test: multi-dimensional c99 vla Sanimir Agovic
2013-11-07 21:19 ` Tom Tromey
2013-10-21 14:40 ` [PATCH 10/10] test: add mi vla test Sanimir Agovic
2013-11-07 21:31 ` Tom Tromey
2013-10-21 14:40 ` [PATCH 09/10] test: basic c99 vla tests Sanimir Agovic
2013-11-07 21:23 ` Tom Tromey
2013-10-21 14:40 ` [PATCH 02/10] type: add c99 variable length array support Sanimir Agovic
2013-11-07 19:02 ` Tom Tromey
2013-11-19 15:31 ` Agovic, Sanimir
2013-11-22 20:00 ` Tom Tromey
2013-11-27 17:08 ` Agovic, Sanimir
[not found] ` <0377C58828D86C4588AEEC42FC3B85A7176BC3DE@IRSMSX105.ger.corp.intel.com>
2013-11-27 17:15 ` Agovic, Sanimir
2013-11-07 19:10 ` Tom Tromey
2013-10-21 14:40 ` [PATCH 07/10] test: evaluate pointers to C99 vla correctly Sanimir Agovic
2013-11-07 20:57 ` Tom Tromey
2013-11-08 6:37 ` Tom Tromey
2013-11-07 21:14 ` Tom Tromey
2013-11-21 18:52 ` C99 variable length array support Pedro Alves
2013-11-21 19:01 ` Pedro Alves
2013-11-21 19:10 ` Pedro Alves
2013-11-22 10:53 ` Agovic, Sanimir
2013-11-22 12:35 ` Pedro Alves
2013-11-22 17:06 ` Agovic, Sanimir
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=0377C58828D86C4588AEEC42FC3B85A71769F292@IRSMSX105.ger.corp.intel.com \
--to=sanimir.agovic@intel.com \
--cc=gdb-patches@sourceware.org \
--cc=tromey@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