From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 40819 invoked by alias); 12 Apr 2015 16:48:02 -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 40729 invoked by uid 89); 12 Apr 2015 16:48:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mail-vn0-f46.google.com Received: from mail-vn0-f46.google.com (HELO mail-vn0-f46.google.com) (209.85.216.46) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Sun, 12 Apr 2015 16:48:00 +0000 Received: by vnbg129 with SMTP id g129so13893208vnb.4 for ; Sun, 12 Apr 2015 09:47:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=lbsh0N+gWD2bzGQ9SfdjQguP2Ld5vx1Mn2AqWF9d1MI=; b=dEA99LgVgAWz/Pmx7pCbegtKQnlNyBssvDdwLxEsy5UMhLasMDrKsYzj2/lyaW3cPP ihv1DavVZ6OqZ1EL8nHhuYpCrWHtRYpKviCYM0mNDPtda4GlDG/9lLJJMQ16C70H4huA DYs3kToA0dhtxo5nYAgXkCUjJ43qQmgR3m8HOSYF9PyyzAkFFI5u+WIT5OBUQCtAlmdO HwYUUvC3sUromNr0HJxjzrGVIjn/0H4dHym5S0cbAFGYgQ3ItFa7lWerXW9T0C3QuT6j l65CfzFLBAO35eCKpsFoAtKWq4TZZA4RCoO4RE833fx9ZMcjl8TMqP3Bd5UGToeKIZwe 7t6Q== X-Gm-Message-State: ALoCoQlUsV8KqijogKVMaVrQgUHTIhIzg3x39z1TZZRpsplVu9vfn4vlhkjEcbiF7HlBJsX6jqIn MIME-Version: 1.0 X-Received: by 10.60.103.70 with SMTP id fu6mr1130339oeb.27.1428857277550; Sun, 12 Apr 2015 09:47:57 -0700 (PDT) Received: by 10.182.103.101 with HTTP; Sun, 12 Apr 2015 09:47:57 -0700 (PDT) In-Reply-To: References: <21796.6013.264282.101943@ruffy2.mtv.corp.google.com> Date: Sun, 12 Apr 2015 16:48:00 -0000 Message-ID: Subject: Re: RFC: Python gdb.Type method returning optimized out gdb.Value From: Doug Evans To: Alexander Smundak Cc: gdb-patches Content-Type: text/plain; charset=UTF-8 X-IsSubscribed: yes X-SW-Source: 2015-04/txt/msg00439.txt.bz2 On Tue, Apr 7, 2015 at 2:23 PM, Alexander Smundak wrote: > Thank you for the quick review. > Edited NEWS, renamed `create_optimized_out' to `optimized_out', > elided 'unavailable' from description, added blank line. > PTAL. > > gdb/doc/ChangeLog: > > 2015-04-07 Sasha Smundak > > * python.texi: New method documented. > > gdb/ChangeLog: > > 2015-04-07 Sasha Smundak > > * NEWS: Mention gdb.Type.optimized_out method. > * python/py-type.c (typy_optimized_out): New function. > > gdb/testsuite/ChangeLog: > > 2015-04-07 Sasha Smundak > > * gdb.python/py-type.exp: New test. LGTM with one nit below. [no need to resubmit another patch] > diff --git a/gdb/NEWS b/gdb/NEWS > index 884c381..ebb573a 100644 > --- a/gdb/NEWS > +++ b/gdb/NEWS > @@ -37,6 +37,8 @@ > which is the name of the objfile as specified by the user, > without, for example, resolving symlinks. > ** You can now write frame unwinders in Python. > + ** gdb.Type objects have a new method "optimized_out", > + returning optimized out gdb.Value instance of this type. > > * New commands > > diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi > index 098d718..091521c6 100644 > --- a/gdb/doc/python.texi > +++ b/gdb/doc/python.texi > @@ -1060,6 +1060,11 @@ If @var{block} is given, then @var{name} is > looked up in that scope. > Otherwise, it is searched for globally. > @end defun > > +@defun Type.optimized_out () > +Return @code{gdb.Value} instance of this type whose value is optimized > +out. This allows a frame decorator to indicate that the value of an > +argument or a local variable is not known. > +@end defun > > Each type has a code, which indicates what category this type falls > into. The available type categories are represented by constants > diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c > index 39376a1..0461b26 100644 > --- a/gdb/python/py-type.c > +++ b/gdb/python/py-type.c > @@ -1181,6 +1181,15 @@ typy_nonzero (PyObject *self) > return 1; > } > > +/* Return optimized out value of this type. */ > + > +static PyObject * > +typy_optimized_out (PyObject *self, PyObject *args) > +{ > + struct type *type = ((type_object *) self)->type; Style rules require a blank line here. Sorry for not catching this earlier. > + return value_to_value_object (allocate_optimized_out_value (type)); > +} > + > /* Return a gdb.Field object for the field named by the argument. */ > > static PyObject * > @@ -1493,6 +1502,8 @@ They are first class values." }, > { "const", typy_const, METH_NOARGS, > "const () -> Type\n\ > Return a const variant of this type." }, > + { "optimized_out", typy_optimized_out, METH_NOARGS, > +"optimized_out() -> Value\nReturn optimized out value of this type." }, > { "fields", typy_fields, METH_NOARGS, > "fields () -> list\n\ > Return a list holding all the fields of this type.\n\ > diff --git a/gdb/testsuite/gdb.python/py-type.exp > b/gdb/testsuite/gdb.python/py-type.exp > index c4c8d9f..2edbfe3 100644 > --- a/gdb/testsuite/gdb.python/py-type.exp > +++ b/gdb/testsuite/gdb.python/py-type.exp > @@ -253,6 +253,9 @@ gdb_test "python print > gdb.lookup_type('char').array(1, 0)" \ > gdb_test "python print gdb.lookup_type('char').array(1, -1)" \ > "Array length must not be negative.*" > > +gdb_test "python print gdb.lookup_type('int').optimized_out()" \ > + "" > + > with_test_prefix "lang_c" { > runto_bp "break to inspect struct and array." > test_fields "c" >