From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6852 invoked by alias); 12 Aug 2011 00:57:58 -0000 Received: (qmail 6844 invoked by uid 22791); 12 Aug 2011 00:57:57 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KAM_STOCKGEN,RP_MATCHES_RCVD,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (74.125.121.67) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 12 Aug 2011 00:57:41 +0000 Received: from wpaz21.hot.corp.google.com (wpaz21.hot.corp.google.com [172.24.198.85]) by smtp-out.google.com with ESMTP id p7C0vbXn017512; Thu, 11 Aug 2011 17:57:38 -0700 Received: from ruffy.mtv.corp.google.com (ruffy.mtv.corp.google.com [172.18.110.50]) by wpaz21.hot.corp.google.com with ESMTP id p7C0vaGK016155; Thu, 11 Aug 2011 17:57:36 -0700 Received: by ruffy.mtv.corp.google.com (Postfix, from userid 67641) id 0B706246070; Thu, 11 Aug 2011 17:57:35 -0700 (PDT) To: gdb-patches@sourceware.org, eliz@gnu.org Subject: RFA, doc RFA: add symbol.type attribute Message-Id: <20110812005736.0B706246070@ruffy.mtv.corp.google.com> Date: Fri, 12 Aug 2011 00:57:00 -0000 From: dje@google.com (Doug Evans) X-System-Of-Record: true X-IsSubscribed: yes 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 X-SW-Source: 2011-08/txt/msg00242.txt.bz2 Hi. It seems an oversight to not export the type attribute of symbols, and I have a need of it. Ok to check in? 2011-08-11 Doug Evans * NEWS: Mention new "type" attribute of python gdb.Symbol objects. * python/py-symbol.c (sympy_get_type): New function. (symbol_object_getset): Add "type". doc/ * gdb.texinfo (Symbols In Python): Document symbol.type. testsuite/ * gdb.python/py-symbol.exp: Add test for symbol.type. Index: NEWS =================================================================== RCS file: /cvs/src/src/gdb/NEWS,v retrieving revision 1.447 diff -u -p -r1.447 NEWS --- NEWS 9 Aug 2011 12:45:39 -0000 1.447 +++ NEWS 12 Aug 2011 00:55:37 -0000 @@ -28,6 +28,8 @@ 'data-directory'/python/gdb/function are now automatically loaded on GDB start-up. + ** Symbols now provide the "type" attribute, the type of the symbol. + * libthread-db-search-path now supports two special values: $sdir and $pdir. $sdir specifies the default system locations of shared libraries. $pdir specifies the directory where the libpthread used by the application Index: doc/gdb.texinfo =================================================================== RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v retrieving revision 1.852 diff -u -p -r1.852 gdb.texinfo --- doc/gdb.texinfo 9 Aug 2011 12:45:39 -0000 1.852 +++ doc/gdb.texinfo 12 Aug 2011 00:55:39 -0000 @@ -23198,6 +23198,12 @@ is not found. A @code{gdb.Symbol} object has the following attributes: @table @code +@defivar Symbol type +The type of the symbol or None if no type is recorded. +This attribute is represented as a @code{gdb.Type} object. +@xref{Types In Python}. This attribute is not writable. +@end defivar + @defivar Symbol symtab The symbol table in which the symbol appears. This attribute is represented as a @code{gdb.Symtab} object. @xref{Symbol Tables In Index: python/py-symbol.c =================================================================== RCS file: /cvs/src/src/gdb/python/py-symbol.c,v retrieving revision 1.7 diff -u -p -r1.7 py-symbol.c --- python/py-symbol.c 17 Apr 2011 14:14:22 -0000 1.7 +++ python/py-symbol.c 12 Aug 2011 00:55:39 -0000 @@ -66,6 +66,22 @@ sympy_str (PyObject *self) } static PyObject * +sympy_get_type (PyObject *self, void *closure) +{ + struct symbol *symbol = NULL; + + SYMPY_REQUIRE_VALID (self, symbol); + + if (SYMBOL_TYPE (symbol) == NULL) + { + Py_INCREF (Py_None); + return Py_None; + } + + return type_to_type_object (SYMBOL_TYPE (symbol)); +} + +static PyObject * sympy_get_symtab (PyObject *self, void *closure) { struct symbol *symbol = NULL; @@ -412,6 +428,8 @@ gdbpy_initialize_symbols (void) static PyGetSetDef symbol_object_getset[] = { + { "type", sympy_get_type, NULL, + "Type of the symbol.", NULL }, { "symtab", sympy_get_symtab, NULL, "Symbol table in which the symbol appears.", NULL }, { "name", sympy_get_name, NULL, Index: testsuite/gdb.python/py-symbol.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.python/py-symbol.exp,v retrieving revision 1.8 diff -u -p -r1.8 py-symbol.exp --- testsuite/gdb.python/py-symbol.exp 26 Jul 2011 18:38:55 -0000 1.8 +++ testsuite/gdb.python/py-symbol.exp 12 Aug 2011 00:55:39 -0000 @@ -95,6 +95,11 @@ gdb_test "python print t\[0\].is_constan gdb_test "python print t\[0\].is_argument" "False" "Test t.is_argument" gdb_test "python print t\[0\].is_function" "False" "Test t.is_function" gdb_test "python print t\[0\].addr_class == gdb.SYMBOL_LOC_CONST" "True" "Test t.addr_class" + +# Test type attribute. +gdb_test "python print t\[0\].type" "enum tag" "Get type" + +# Test symtab attribute. gdb_test "python print t\[0\].symtab" "gdb.python/py-symbol.c.*" "Get symtab" # C++ tests