From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by sourceware.org (Postfix) with ESMTPS id 6E8603AA982D for ; Wed, 28 Apr 2021 17:00:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 6E8603AA982D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=andrew.burgess@embecosm.com Received: by mail-wr1-x432.google.com with SMTP id k14so13893187wrv.5 for ; Wed, 28 Apr 2021 10:00:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=HMq68Yckp+Uo2pLdDbu0a6sOm7ExfmEJYU9udsNTFwc=; b=JC4yU6bPrmX9+sHDkDCohL8wOXgA6fGvZdPfcIp7fRhQhHSfTVidCXC1KX8yOkzO14 RN3H5G8XKXPzKHnCIyCcArLPBLbWp7KNxr1QSWBFE9NJLFnm32CjH4EJoM4LFxRx6t/n aVrn9X2B+uoTxX5/3HqwaWlGgDvYeeJJi3FJot7Fe7KtN9/JpKIL8eau8XORcnGgmmRM G9x4gsDXrUM9HPMNpH6m8nBTnCPf3AZnCQWs7lwVZpWpcSicKPhHvcuUl4RR7ukjDPlf Vu8TEs+N2af56b96rASJsLa8cfvcv7BQX1VKwq2BjV3XbduvX73o7LT/jAMmSf0B6WgS RQYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=HMq68Yckp+Uo2pLdDbu0a6sOm7ExfmEJYU9udsNTFwc=; b=abdnaa57fY/YRLDr7blJwMrUqT/1syiOhA7E8Dnt0Uxby0pLLfISZhivuA7UkN8pqm nFlQuD8zbtwNiVcF7ZJx7V64aFX5+QjZKA157nvp0M9Auza4qRpVV6t1IEHa7yCpkmGw cm93r7l68p0Rc9MmZ9BgN94CkJsEyz0eK4m5Az7JRBqUgLPPXx88o8ZBARImqewQ1WE0 ZvmCchjvr/Oo5Y7GjIUmNipLD6Og1Y+3VnrXQWt+c45u/OmM2Fji0q8cMhVomAlvRNt3 i4PlSBlV0hI5TpnQy0VuwDyyG2Cn0CtB16VcXIFVk5Qo6qbUZSefkA/o1gPqA2RvVQWa FElg== X-Gm-Message-State: AOAM530x/rJUPXexc75vjzqRAJtgIQvbeNn0Vgf0z28XLWhn3MdgvJyJ GBLzPXl58PNwLEUwp9oC3+htiQ== X-Google-Smtp-Source: ABdhPJzBUHJN06Sz8xq3oklDkO6EzXPxqzZpxjJn5tm9QUf6tyuAC6QA5EARl0VGiRQjmUNsVf+wWg== X-Received: by 2002:adf:f20b:: with SMTP id p11mr23092772wro.244.1619629257580; Wed, 28 Apr 2021 10:00:57 -0700 (PDT) Received: from localhost (host109-151-46-70.range109-151.btcentralplus.com. [109.151.46.70]) by smtp.gmail.com with ESMTPSA id n2sm353246wmb.32.2021.04.28.10.00.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Apr 2021 10:00:57 -0700 (PDT) Date: Wed, 28 Apr 2021 18:00:56 +0100 From: Andrew Burgess To: George Barrett Cc: gdb-patches@sourceware.org Subject: Re: [PATCH v3 3/3] Guile: add value-const-value Message-ID: <20210428170056.GC2364578@embecosm.com> References: <&e1lx8mojs1b03hu3o_asydo0za8-nyh&337akgbzjn.o13/-otj@mail.bob131.so> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Operating-System: Linux/5.8.18-100.fc31.x86_64 (x86_64) X-Uptime: 18:00:45 up 18 days, 3:47, X-Editor: GNU Emacs [ http://www.gnu.org/software/emacs ] X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Apr 2021 17:01:00 -0000 * George Barrett via Gdb-patches [2021-04-29 02:27:49 +1000]: > The Guile API doesn't currently have an equivalent to the Python API's > gdb.Value.const_value(). This commit adds a procedure with equivalent > semantics to the Guile API. > > gdb/ChangeLog: > > 2021-04-29 George Barrett > > * guile/scm-value.c (gdbscm_value_const_value): Add > implementation of value-const-value procedure. > (value_functions): Add value-const-value procedure. > * NEWS (Guile API): Note the addition of the new procedure. > > gdb/doc/ChangeLog: > > 2021-04-29 George Barrett > > * guile.texi (Values From Inferior In Guile): Add > documentation for value-const-value. > > gdb/testsuite/ChangeLog: > > 2021-04-29 George Barrett > > * gdb.guile/scm-value.exp (test_value_in_inferior): Add test > for value-const-value. LGTM. Thanks, Andrew > --- > gdb/NEWS | 5 +++-- > gdb/doc/guile.texi | 5 +++++ > gdb/guile/scm-value.c | 23 +++++++++++++++++++++++ > gdb/testsuite/gdb.guile/scm-value.exp | 3 +++ > 4 files changed, 34 insertions(+), 2 deletions(-) > > diff --git a/gdb/NEWS b/gdb/NEWS > index 0c51f5fceca..9e18aa6cc68 100644 > --- a/gdb/NEWS > +++ b/gdb/NEWS > @@ -192,8 +192,9 @@ QMemTags > value-referenced-value procedure now handles rvalue reference > values. > > - ** New procedures for obtaining reference values: > - value-reference-value and rvalue-reference-value. > + ** New procedures for obtaining value variants: > + value-reference-value, rvalue-reference-value and > + value-const-value. > > *** Changes in GDB 10 > > diff --git a/gdb/doc/guile.texi b/gdb/doc/guile.texi > index 18782bb7589..a3ff75979e8 100644 > --- a/gdb/doc/guile.texi > +++ b/gdb/doc/guile.texi > @@ -811,6 +811,11 @@ Return a new @code{} object which is an rvalue reference to > the value encapsulated by @code{} object @var{value}. > @end deffn > > +@deffn {Scheme Procedure} value-const-value value > +Return a new @code{} object which is a @samp{const} version > +of @code{} object @var{value}. > +@end deffn > + > @deffn {Scheme Procedure} value-field value field-name > Return field @var{field-name} from @code{} object @var{value}. > @end deffn > diff --git a/gdb/guile/scm-value.c b/gdb/guile/scm-value.c > index 2ab193f044a..fb753aeecf0 100644 > --- a/gdb/guile/scm-value.c > +++ b/gdb/guile/scm-value.c > @@ -520,6 +520,24 @@ gdbscm_rvalue_reference_value (SCM self) > return gdbscm_reference_value (self, TYPE_CODE_RVALUE_REF); > } > > +/* (value-const-value ) -> */ > + > +static SCM > +gdbscm_value_const_value (SCM self) > +{ > + value_smob *v_smob > + = vlscm_get_value_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME); > + struct value *value = v_smob->value; > + > + return gdbscm_wrap ([=] > + { > + scoped_value_mark free_values; > + > + struct value *res_val = make_cv_value (1, 0, value); > + return vlscm_scm_from_value (res_val); > + }); > +} > + > /* (value-type ) -> */ > > static SCM > @@ -1394,6 +1412,11 @@ Return a object which is a reference to the given value." }, > "\ > Return a object which is an rvalue reference to the given value." }, > > + { "value-const-value", 1, 0, 0, > + as_a_scm_t_subr (gdbscm_value_const_value), > + "\ > +Return a object which is a 'const' version of the given value." }, > + > { "value-field", 2, 0, 0, as_a_scm_t_subr (gdbscm_value_field), > "\ > Return the specified field of the value.\n\ > diff --git a/gdb/testsuite/gdb.guile/scm-value.exp b/gdb/testsuite/gdb.guile/scm-value.exp > index 883c4bea72e..28b0fd83a9f 100644 > --- a/gdb/testsuite/gdb.guile/scm-value.exp > +++ b/gdb/testsuite/gdb.guile/scm-value.exp > @@ -183,6 +183,9 @@ proc test_value_in_inferior {} { > "test rvalue-reference-value" > gdb_test "gu (equal? argv (value-referenced-value argv-rref))" "#t" > gdb_test "gu (eqv? (type-code (value-type argv-rref)) TYPE_CODE_RVALUE_REF)" "#t" > + > + gdb_test "gu (equal? (value-type (value-const-value argv)) (type-const (value-type argv)))" \ > + "#t" > } > > proc test_strings {} { > -- > 2.30.2