From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 45054 invoked by alias); 29 Apr 2015 00:45:12 -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 45040 invoked by uid 89); 29 Apr 2015 00:45:10 -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-ie0-f202.google.com Received: from mail-ie0-f202.google.com (HELO mail-ie0-f202.google.com) (209.85.223.202) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 29 Apr 2015 00:45:08 +0000 Received: by iebtr6 with SMTP id tr6so2747934ieb.0 for ; Tue, 28 Apr 2015 17:45:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:mime-version:content-type :content-transfer-encoding:message-id:date:to:cc:subject:in-reply-to :references; bh=j5SHIilfttAFfnmYn5OU+lRbuGtVBJjo8lPVhBMNkkY=; b=UCozAAba/DHBTUwR0fl/k37PLpZZzudh52m7MisUy9xAJO2IQs4i77oo0z5+TGyMS8 A+MoyiGhuEFr7TO6pgUSP6pCAgQc06cWiY7KEuu8VLEwcDY6//BnDCBh2NXyRyxtcQEd 9f2iRCTi2OFaPuNkbvC7K+/MlqB5pAV0GH5WKqou/6SkEGwQ/9LHhF/J7SuBFfBLrjK7 39v49+w6XLfpDzdL3/LLkGsC8o9UFjN1sYCrMBOab7q8UUZI1F+2jEV3R4HHslUcRxKo kJ/X8CYaIDJN3WNkEIUTQWOEgrcKuyh1txr6K3sLqK/3u5SZgZNrEtvUHgsqgJkeNY8s F2ZQ== X-Gm-Message-State: ALoCoQmvavSWsB6/518pbqS6/OgmLKoPTB86kRnDSQQXvkJRE7YltveQn2KkmpiUKgoyLeVFMWMwipmRYWJG9zwPsXuOf4ZNxC9ZCggC1FQgSIKosESTwFf8PlPOIyU5hfEBWKWFYEnWYe7hdoTWcRhSyVY2cT0NZy6k/42GPrb4oD551pdQ274= X-Received: by 10.50.102.3 with SMTP id fk3mr988121igb.5.1430268306460; Tue, 28 Apr 2015 17:45:06 -0700 (PDT) Received: from corpmail-nozzle1-1.hot.corp.google.com ([100.108.1.104]) by gmr-mx.google.com with ESMTPS id i27si1306288yha.6.2015.04.28.17.45.05 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Apr 2015 17:45:06 -0700 (PDT) Received: from ruffy2.mtv.corp.google.com ([172.17.128.107]) by corpmail-nozzle1-1.hot.corp.google.com with ESMTP id 4ZtiJH91.1; Tue, 28 Apr 2015 17:45:06 -0700 From: Doug Evans MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <21824.10641.108664.534077@ruffy2.mtv.corp.google.com> Date: Wed, 29 Apr 2015 05:20:00 -0000 To: Alexander Smundak Cc: gdb-patches Subject: Re: RFC: Python gdb.Type method returning optimized out gdb.Value In-Reply-To: References: <21796.6013.264282.101943@ruffy2.mtv.corp.google.com> X-IsSubscribed: yes X-SW-Source: 2015-04/txt/msg01059.txt.bz2 Alexander Smundak writes: > Thank you for the quick review. > Edited NEWS, renamed `create_optimized_out' to `optimized_out', > elided 'unavailable' from description, added blank line. > PTAL. > Hi. Here is what I committed. I found a few more nits. diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 721346a..4e78d39 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2015-04-28 Sasha Smundak + + * NEWS: Mention gdb.Type.optimized_out method. + * python/py-type.c (typy_optimized_out): New function. + 2015-04-28 John Baldwin * fbsd-nat.c: Include "gdb_wait.h" instead of . diff --git a/gdb/NEWS b/gdb/NEWS index b711553..d463b52 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -52,6 +52,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/ChangeLog b/gdb/doc/ChangeLog index 5da9943..13ca87b 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,7 @@ +2015-04-28 Sasha Smundak + + * python.texi: New method documented. + 2015-04-24 Andrew Burgess * gdb.texinfo (Dump/Restore Files): Add detail about verilog dump diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi index 448fa8b2..12d2b71 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..648d8c8 100644 --- a/gdb/python/py-type.c +++ b/gdb/python/py-type.c @@ -1181,6 +1181,16 @@ 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; + + 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 +1503,9 @@ 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\n\ +Return 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/ChangeLog b/gdb/testsuite/ChangeLog index 1967aca..80d88cf 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2015-04-28 Sasha Smundak + + * gdb.python/py-type.exp: New test. + 2015-04-28 Andy Wingo * gdb.python/py-parameter.exp: diff --git a/gdb/testsuite/gdb.python/py-type.exp b/gdb/testsuite/gdb.python/py-type.exp index 9e522f2..58a2394 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"