From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30750 invoked by alias); 17 Jan 2008 21:11:36 -0000 Received: (qmail 30725 invoked by uid 22791); 17 Jan 2008 21:11:35 -0000 X-Spam-Check-By: sourceware.org Received: from wa-out-1112.google.com (HELO wa-out-1112.google.com) (209.85.146.181) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 17 Jan 2008 21:11:03 +0000 Received: by wa-out-1112.google.com with SMTP id l35so1296796waf.12 for ; Thu, 17 Jan 2008 13:11:01 -0800 (PST) Received: by 10.114.176.1 with SMTP id y1mr2934391wae.86.1200604261237; Thu, 17 Jan 2008 13:11:01 -0800 (PST) Received: by 10.114.92.3 with HTTP; Thu, 17 Jan 2008 13:11:01 -0800 (PST) Message-ID: Date: Thu, 17 Jan 2008 21:11:00 -0000 From: "Rob Quill" To: "Jim Blandy" Subject: Re: New scope checking patch Cc: msnyder@specifix.com, gdb-patches@sourceware.org In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: 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: 2008-01/txt/msg00458.txt.bz2 On 17/01/2008, Jim Blandy wrote: > Also, please be sure that the indentation follows the GNU coding > conventions. Substatements should be indented by two spaces. > (c-exp.y is not a great place to look for examples, since it's a mess, > but look at, say, frame.c.) > > From looking at your patch as it arrived through my mailer, it seemed > that the code block for the new $in_scope grammar rule was not > indented in the same way as the other blocks. These should all be > consistent. Hey, Sorry about getting the formatting consistently wrong. I've reformatted it and it looks to me like it matches the other cases, although it is hard to tell where to use tabs and where to use spaces, and I'm never sure it's right as what if I have a different tab size to you etc. I tried putting it through indent, but that just made a mess, although as a rule is it OK to use that if it is a C file? http://www.gnu.org/prep/standards/standards.html#Formatting states: "The rest of this section gives our recommendations for other aspects of C formatting style, which is also the default style of the indent program in version 1.2 and newer." Anyway, hopefully this version will have the formatting right. Rob 2008-01-17 Rob Quill * c-exp.y : Add $in_scope as a type of expression. Index: gdb/c-exp.y =================================================================== RCS file: /cvs/src/src/gdb/c-exp.y,v retrieving revision 1.42 diff -u -p -r1.42 c-exp.y --- gdb/c-exp.y 9 Jan 2008 19:27:15 -0000 1.42 +++ gdb/c-exp.y 17 Jan 2008 20:59:33 -0000 @@ -208,6 +208,8 @@ static int parse_number (char *, int, in %token TRUEKEYWORD %token FALSEKEYWORD +/* $in_scope opperator */ +%token IN_SCOPE %left ',' %left ABOVE_COMMA @@ -251,6 +253,30 @@ exp1 : exp ; /* Expressions, not including the comma operator. */ +exp : IN_SCOPE '(' name_not_typename ')' + { + struct type *int_type; + struct minimal_symbol *min_symbol; + + /* If there are no symbols then just stop right away */ + if (!have_full_symbols () && !have_partial_symbols ()) + error ("No symbol table is loaded. Use the \"file\" command."); + + /* Otherwise, prepare to write out the value */ + int_type = builtin_type (current_gdbarch)->builtin_int; + write_exp_elt_opcode (OP_LONG); + write_exp_elt_type (int_type); + + min_symbol = + lookup_minimal_symbol (copy_name($3.stoken), NULL, NULL); + if ($3.sym || min_symbol) + write_exp_elt_longcst ((LONGEST) 1); + else + write_exp_elt_longcst ((LONGEST) 0); + + write_exp_elt_opcode (OP_LONG); } + ; + exp : '*' exp %prec UNARY { write_exp_elt_opcode (UNOP_IND); } ; @@ -1678,6 +1704,9 @@ yylex () /* Catch specific keywords. Should be done with a data structure. */ switch (namelen) { + case 9: + if (strncmp (tokstart, "$in_scope", 9) == 0) + return IN_SCOPE; case 8: if (strncmp (tokstart, "unsigned", 8) == 0) return UNSIGNED;