From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6097 invoked by alias); 16 Dec 2013 17:58:51 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 6085 invoked by uid 89); 16 Dec 2013 17:58:50 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.4 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-wi0-f173.google.com Received: from mail-wi0-f173.google.com (HELO mail-wi0-f173.google.com) (209.85.212.173) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Mon, 16 Dec 2013 17:58:49 +0000 Received: by mail-wi0-f173.google.com with SMTP id hm19so1491833wib.12 for ; Mon, 16 Dec 2013 09:58:46 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.180.206.11 with SMTP id lk11mr12364510wic.16.1387216726593; Mon, 16 Dec 2013 09:58:46 -0800 (PST) Received: by 10.194.123.4 with HTTP; Mon, 16 Dec 2013 09:58:46 -0800 (PST) In-Reply-To: <0377C58828D86C4588AEEC42FC3B85A7176C9FF5@IRSMSX105.ger.corp.intel.com> References: <1386166785-28037-1-git-send-email-sanimir.agovic@intel.com> <1386166785-28037-6-git-send-email-sanimir.agovic@intel.com> <0377C58828D86C4588AEEC42FC3B85A7176C9FF5@IRSMSX105.ger.corp.intel.com> Date: Mon, 16 Dec 2013 17:58:00 -0000 Message-ID: Subject: Re: [PATCH v3 05/13] vla: update type from newly created value From: Doug Evans To: "Agovic, Sanimir" Cc: "tromey@redhat.com" , "palves@redhat.com" , "gdb-patches@sourceware.org" , "Boell, Keven" Content-Type: text/plain; charset=ISO-8859-1 X-IsSubscribed: yes X-SW-Source: 2013-12/txt/msg00591.txt.bz2 On Mon, Dec 16, 2013 at 7:20 AM, Agovic, Sanimir wrote: >> -----Original Message----- >> From: Doug Evans [mailto:xdje42@gmail.com] >> Sent: Friday, December 06, 2013 08:36 AM >> To: Agovic, Sanimir >> Cc: tromey@redhat.com; palves@redhat.com; xdje42@gmail.com; gdb-patches@sourceware.org; >> Boell, Keven >> Subject: Re: [PATCH v3 05/13] vla: update type from newly created value >> >> > * ada-lang.c (ada_value_primitive_packed_val): Re-fetch type from value. >> >> Hi. Can you add a comment to each of the functions that >> require this, saying something like "You must do after calling me." >> value_at, value_from_contents_and_address, others? >> > Thanks Doug, below is the diff being part of v4. Please let me know it is OK. > > diff --git a/gdb/valops.c b/gdb/valops.c > index ec2f1f6..1bccacc 100644 > --- a/gdb/valops.c > +++ b/gdb/valops.c > @@ -904,7 +904,9 @@ value_one (struct type *type) > return val; > } > > -/* Helper function for value_at, value_at_lazy, and value_at_lazy_stack. */ > +/* Helper function for value_at, value_at_lazy, and value_at_lazy_stack. > + The type of the created value may differ from the passed type TYPE. > + Make sure to retrieve values new type after this call. */ > > static struct value * > get_value_at (struct type *type, CORE_ADDR addr, int lazy) > @@ -929,7 +931,9 @@ get_value_at (struct type *type, CORE_ADDR addr, int lazy) > value_at_lazy instead. value_at_lazy simply records the address of > the data and sets the lazy-evaluation-required flag. The lazy flag > is tested in the value_contents macro, which is used if and when > - the contents are actually required. > + the contents are actually required. The type of the created value > + may differ from the passed type TYPE. Make sure to retrieve values > + new type after this call. > > Note: value_at does *NOT* handle embedded offsets; perform such > adjustments before or after calling it. */ > diff --git a/gdb/value.c b/gdb/value.c > index f1cf4dd..3f445f8 100644 > --- a/gdb/value.c > +++ b/gdb/value.c > @@ -3193,7 +3193,8 @@ value_from_pointer (struct type *type, CORE_ADDR addr) > > /* Create a value of type TYPE whose contents come from VALADDR, if it > is non-null, and whose memory address (in the inferior) is > - ADDRESS. */ > + ADDRESS. The type of the created value may differ from the passed > + type TYPE. Make sure to retrieve values new type after this call. */ > > struct value * > value_from_contents_and_address (struct type *type, Thanks! Looks ok to me.