From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8821 invoked by alias); 28 Dec 2009 21:05:36 -0000 Received: (qmail 8807 invoked by uid 22791); 28 Dec 2009 21:05:34 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,KAM_STOCKGEN X-Spam-Check-By: sourceware.org Received: from NaN.false.org (HELO nan.false.org) (208.75.86.248) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 28 Dec 2009 21:05:30 +0000 Received: from nan.false.org (localhost [127.0.0.1]) by nan.false.org (Postfix) with ESMTP id ECE0810E65; Mon, 28 Dec 2009 21:05:27 +0000 (GMT) Received: from caradoc.them.org (209.195.188.212.nauticom.net [209.195.188.212]) by nan.false.org (Postfix) with ESMTP id C2D8810D51; Mon, 28 Dec 2009 21:05:27 +0000 (GMT) Received: from drow by caradoc.them.org with local (Exim 4.69) (envelope-from ) id 1NPMmM-000866-KK; Mon, 28 Dec 2009 16:05:26 -0500 Date: Mon, 28 Dec 2009 21:05:00 -0000 From: Daniel Jacobowitz To: Eli Zaretskii Cc: gdb-patches@sourceware.org Subject: Re: RFC: Skip declarations in "info variables" Message-ID: <20091228210526.GA30551@caradoc.them.org> Mail-Followup-To: Eli Zaretskii , gdb-patches@sourceware.org References: <20091113214448.GA30270@caradoc.them.org> <833a4ho3ej.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <833a4ho3ej.fsf@gnu.org> User-Agent: Mutt/1.5.20 (2009-06-14) 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: 2009-12/txt/msg00408.txt.bz2 I forgot to come back to this patch. On Sat, Nov 14, 2009 at 11:35:00AM +0200, Eli Zaretskii wrote: > To decide whether or not this is a Good Thing, we need to answer a > question: What is the purpose of "info variables"? More specifically, > what are the main use-cases for using it? Can people please share > their experience with this command? Based on the feedback we received, I think definitions are the useful part of the "info variables" output. > This is an almost mechanical change, so okay. But I think we need a > NEWS entry about the behavior change. Agreed. How about this? -- Daniel Jacobowitz CodeSourcery 2009-12-28 Daniel Jacobowitz * NEWS: Document "info variables" change. * dwarf2read.c (new_symbol): Add file-scope external unresolved symbols to global_symbols. * symtab.c (search_symbols): Skip LOC_UNRESOLVED symbols. * gdb.texinfo (Symbols): "info variables" prints definitions, not declarations. --- gdb/doc/gdb.texinfo | 2 +- gdb/dwarf2read.c | 9 ++++++++- gdb/symtab.c | 5 ++++- 3 files changed, 13 insertions(+), 3 deletions(-) Index: src/gdb/dwarf2read.c =================================================================== --- src.orig/gdb/dwarf2read.c 2009-11-13 16:22:50.000000000 -0500 +++ src/gdb/dwarf2read.c 2009-11-13 16:27:57.000000000 -0500 @@ -8441,8 +8441,15 @@ new_symbol (struct die_info *die, struct if (attr2 && (DW_UNSND (attr2) != 0) && dwarf2_attr (die, DW_AT_type, cu) != NULL) { + struct pending **list_to_add; + + /* A variable with DW_AT_external is never static, but it + may be block-scoped. */ + list_to_add = (cu->list_in_scope == &file_symbols + ? &global_symbols : cu->list_in_scope); + SYMBOL_CLASS (sym) = LOC_UNRESOLVED; - add_symbol_to_list (sym, cu->list_in_scope); + add_symbol_to_list (sym, list_to_add); } else if (!die_is_declaration (die, cu)) { Index: src/gdb/symtab.c =================================================================== --- src.orig/gdb/symtab.c 2009-11-13 16:22:50.000000000 -0500 +++ src/gdb/symtab.c 2009-11-13 16:27:57.000000000 -0500 @@ -3234,7 +3234,9 @@ search_symbols (char *regexp, domain_enu && ((regexp == NULL || re_exec (SYMBOL_NATURAL_NAME (*psym)) != 0) && ((kind == VARIABLES_DOMAIN && SYMBOL_CLASS (*psym) != LOC_TYPEDEF - && SYMBOL_CLASS (*psym) != LOC_BLOCK) + && SYMBOL_CLASS (*psym) != LOC_UNRESOLVED + && SYMBOL_CLASS (*psym) != LOC_BLOCK + && SYMBOL_CLASS (*psym) != LOC_CONST) || (kind == FUNCTIONS_DOMAIN && SYMBOL_CLASS (*psym) == LOC_BLOCK) || (kind == TYPES_DOMAIN && SYMBOL_CLASS (*psym) == LOC_TYPEDEF)))) { @@ -3310,6 +3312,7 @@ search_symbols (char *regexp, domain_enu && ((regexp == NULL || re_exec (SYMBOL_NATURAL_NAME (sym)) != 0) && ((kind == VARIABLES_DOMAIN && SYMBOL_CLASS (sym) != LOC_TYPEDEF + && SYMBOL_CLASS (sym) != LOC_UNRESOLVED && SYMBOL_CLASS (sym) != LOC_BLOCK && SYMBOL_CLASS (sym) != LOC_CONST) || (kind == FUNCTIONS_DOMAIN && SYMBOL_CLASS (sym) == LOC_BLOCK) Index: src/gdb/doc/gdb.texinfo =================================================================== --- src.orig/gdb/doc/gdb.texinfo 2009-11-13 16:28:20.000000000 -0500 +++ src/gdb/doc/gdb.texinfo 2009-11-13 16:28:43.000000000 -0500 @@ -12920,7 +12920,7 @@ that conflict with the regular expressio @kindex info variables @item info variables -Print the names and data types of all variables that are declared +Print the names and data types of all variables that are defined outside of functions (i.e.@: excluding local variables). @item info variables @var{regexp} Index: NEWS =================================================================== RCS file: /cvs/src/src/gdb/NEWS,v retrieving revision 1.340 diff -u -p -r1.340 NEWS --- NEWS 8 Dec 2009 00:17:45 -0000 1.340 +++ NEWS 28 Dec 2009 21:04:33 -0000 @@ -30,6 +30,10 @@ disassemble The disassemble command, when invoked with two arguments, now requires the arguments to be comma-separated. +info variables + The info variables command now displays variable definitions. Files + which only declare a variable are not shown. + * New commands (for set/show, see "New options" below) record save []