From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12928 invoked by alias); 16 Jul 2010 14:15:07 -0000 Received: (qmail 12517 invoked by uid 22791); 16 Jul 2010 14:15:01 -0000 X-SWARE-Spam-Status: No, hits=-5.9 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,TW_BJ,TW_CP,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 16 Jul 2010 14:14:51 +0000 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o6GEEoWi025491 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 16 Jul 2010 10:14:50 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o6GEEnCV003878 for ; Fri, 16 Jul 2010 10:14:50 -0400 Received: from [10.15.16.129] (dhcp-10-15-16-129.yyz.redhat.com [10.15.16.129]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id o6GEEnRT027600 for ; Fri, 16 Jul 2010 10:14:49 -0400 Message-ID: <4C406959.2090605@redhat.com> Date: Fri, 16 Jul 2010 14:15:00 -0000 From: sami wagiaalla User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.10) Gecko/20100621 Fedora/3.0.5-1.fc13 Thunderbird/3.0.5 MIME-Version: 1.0 To: gdb-patches@sourceware.org Subject: Re: [patch 2/3] Change cplus_specific to an alocated struct References: <4BFD4230.3030600@redhat.com> <4C167FCA.7030300@redhat.com> <4C3B598F.9000403@redhat.com> In-Reply-To: Content-Type: multipart/mixed; boundary="------------050408070403080105080707" 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-07/txt/msg00240.txt.bz2 This is a multi-part message in MIME format. --------------050408070403080105080707 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 24 Update patch attached. --------------050408070403080105080707 Content-Type: text/plain; name="dynamic-cplus_specific_2.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="dynamic-cplus_specific_2.patch" Content-length: 5292 Use setter and getter for demangled_name. 2010-07-15 Sami Wagiaalla * symtab.h (symbol_set_demangled_name): New function. (symbol_get_demangled_name): New function. * symtab.c (symbol_set_demangled_name): New function. (symbol_get_demangled_name): New function. (symbol_init_language_specific): Use demangled_name setter and getter. (symbol_set_names): Ditto. (symbol_natural_name): Ditto. (symbol_demangled_name): Ditto. * dwarf2read.c (new_symbol): Ditto. diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 8dd239d..4510ccd 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -8673,9 +8673,8 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) /* Fortran does not have mangling standard and the mangling does differ between gfortran, iFort etc. */ if (cu->language == language_fortran - && sym->ginfo.language_specific.mangled_lang.demangled_name == NULL) - sym->ginfo.language_specific.mangled_lang.demangled_name - = (char *) dwarf2_full_name (name, die, cu); + && symbol_get_demangled_name (&(sym->ginfo)) == NULL) + symbol_set_demangled_name (&(sym->ginfo), (char *) dwarf2_full_name (name, die, cu)); /* Default assumptions. Use the passed type or decode it from the die. */ diff --git a/gdb/symtab.c b/gdb/symtab.c index 7e9873e..2ed1bad 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -340,6 +340,22 @@ gdb_mangle_name (struct type *type, int method_id, int signature_id) return (mangled_name); } +/* Set the demangled name of GSYMBOL to NAME. NAME must be already + correctly allocated. */ +void +symbol_set_demangled_name (struct general_symbol_info *gsymbol, + char *name) +{ + gsymbol->language_specific.mangled_lang.demangled_name = name; +} + +/* Return the demangled name of GSYMBOL. */ +char * +symbol_get_demangled_name (const struct general_symbol_info *gsymbol) +{ + return gsymbol->language_specific.mangled_lang.demangled_name; +} + /* Initialize the language dependent portion of a symbol depending upon the language for the symbol. */ @@ -354,7 +370,7 @@ symbol_init_language_specific (struct general_symbol_info *gsymbol, || gsymbol->language == language_objc || gsymbol->language == language_fortran) { - gsymbol->language_specific.mangled_lang.demangled_name = NULL; + symbol_set_demangled_name (gsymbol, NULL); } else { @@ -537,7 +553,7 @@ symbol_set_names (struct general_symbol_info *gsymbol, memcpy (gsymbol->name, linkage_name, len); gsymbol->name[len] = '\0'; } - gsymbol->language_specific.mangled_lang.demangled_name = NULL; + symbol_set_demangled_name (gsymbol, NULL); return; } @@ -633,10 +649,9 @@ symbol_set_names (struct general_symbol_info *gsymbol, gsymbol->name = (*slot)->mangled + lookup_len - len; if ((*slot)->demangled[0] != '\0') - gsymbol->language_specific.mangled_lang.demangled_name - = (*slot)->demangled; + symbol_set_demangled_name (gsymbol, (*slot)->demangled); else - gsymbol->language_specific.mangled_lang.demangled_name = NULL; + symbol_set_demangled_name (gsymbol, NULL); } /* Return the source code name of a symbol. In languages where @@ -652,12 +667,12 @@ symbol_natural_name (const struct general_symbol_info *gsymbol) case language_java: case language_objc: case language_fortran: - if (gsymbol->language_specific.mangled_lang.demangled_name != NULL) - return gsymbol->language_specific.mangled_lang.demangled_name; + if (symbol_get_demangled_name (gsymbol) != NULL) + return symbol_get_demangled_name (gsymbol); break; case language_ada: - if (gsymbol->language_specific.mangled_lang.demangled_name != NULL) - return gsymbol->language_specific.mangled_lang.demangled_name; + if (symbol_get_demangled_name (gsymbol) != NULL) + return symbol_get_demangled_name (gsymbol); else return ada_decode_symbol (gsymbol); break; @@ -679,12 +694,12 @@ symbol_demangled_name (const struct general_symbol_info *gsymbol) case language_java: case language_objc: case language_fortran: - if (gsymbol->language_specific.mangled_lang.demangled_name != NULL) - return gsymbol->language_specific.mangled_lang.demangled_name; + if (symbol_get_demangled_name (gsymbol) != NULL) + return symbol_get_demangled_name (gsymbol); break; case language_ada: - if (gsymbol->language_specific.mangled_lang.demangled_name != NULL) - return gsymbol->language_specific.mangled_lang.demangled_name; + if (symbol_get_demangled_name (gsymbol) != NULL) + return symbol_get_demangled_name (gsymbol); else return ada_decode_symbol (gsymbol); break; diff --git a/gdb/symtab.h b/gdb/symtab.h index bad76dd..ceffe2b 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -154,6 +154,10 @@ struct general_symbol_info struct obj_section *obj_section; }; +extern void symbol_set_demangled_name (struct general_symbol_info *, char *); + +extern char *symbol_get_demangled_name (const struct general_symbol_info *); + extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, struct obj_section *); /* Note that all the following SYMBOL_* macros are used with the --------------050408070403080105080707--