From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28601 invoked by alias); 2 Nov 2010 08:06:10 -0000 Received: (qmail 28591 invoked by uid 22791); 2 Nov 2010 08:06:09 -0000 X-SWARE-Spam-Status: No, hits=-1.1 required=5.0 tests=AWL,BAYES_00,KAM_STOCKGEN,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 02 Nov 2010 08:06:04 +0000 Received: (qmail 30392 invoked from network); 2 Nov 2010 08:06:02 -0000 Received: from unknown (HELO ?192.168.0.100?) (yao@127.0.0.2) by mail.codesourcery.com with ESMTPA; 2 Nov 2010 08:06:02 -0000 Subject: Re: [PATCH] call cp_lookup_symbol_namespace recursively to search symbols in C++ base classes From: Yao Qi To: "Liu, Lei" Cc: gdb-patches@sourceware.org In-Reply-To: <4CCF89F0.5090100@windriver.com> References: <4CCF89F0.5090100@windriver.com> Content-Type: text/plain; charset="UTF-8" Date: Tue, 02 Nov 2010 08:06:00 -0000 Message-ID: <1288685151.4864.31.camel@yaolp> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit 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: 2010-11/txt/msg00016.txt.bz2 On Tue, 2010-11-02 at 11:48 +0800, Liu, Lei wrote: Here are my two cents on coding conventions. > diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c > index 16f58ca..822423e 100644 > --- a/gdb/cp-namespace.c > +++ b/gdb/cp-namespace.c > @@ -513,6 +513,8 @@ cp_lookup_symbol_namespace (const char *scope, > const domain_enum domain) > { > struct symbol *sym; > + struct symbol *scope_sym; > + struct type *scope_type; > Add one more space before "struct". > /* First, try to find the symbol in the given namespace. */ > sym = cp_lookup_symbol_in_namespace (scope, name, block, domain); > @@ -530,6 +532,31 @@ cp_lookup_symbol_namespace (const char *scope, > block = BLOCK_SUPERBLOCK (block); > } > > + /* If scope is a C++ class, we need to search all its base classes. */ > + if (scope == NULL || scope[0] == '\0') > + return NULL; > + > + scope_sym = lookup_symbol (scope, NULL, VAR_DOMAIN, NULL); > + if (scope_sym == NULL) > + return NULL; > + > + scope_type = SYMBOL_TYPE(scope_sym); Add a space between SYMBOL_TYPE and "(". > + if (scope_type == NULL) > + return NULL; > + > + if (TYPE_CODE (scope_type) == TYPE_CODE_STRUCT) > + { > + int nbases = TYPE_N_BASECLASSES (scope_type); > + int i; > + for (i = 0; i < nbases; i++) > + { > + const char *base_name = TYPE_BASECLASS_NAME (scope_type, i); > + sym = cp_lookup_symbol_namespace (base_name, name, block, > domain); > + if (sym != NULL) > + return sym; > + } > + } > + > return NULL; > } -- Yao Qi CodeSourcery