From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28033 invoked by alias); 29 Sep 2004 08:01:39 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 27769 invoked from network); 29 Sep 2004 08:01:32 -0000 Received: from unknown (HELO nile.gnat.com) (205.232.38.5) by sourceware.org with SMTP; 29 Sep 2004 08:01:32 -0000 Received: from localhost (localhost [127.0.0.1]) by nile.gnat.com (Postfix) with ESMTP id 1A618F2935 for ; Wed, 29 Sep 2004 04:01:31 -0400 (EDT) Received: from nile.gnat.com ([127.0.0.1]) by localhost (nile.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 08760-01-9 for ; Wed, 29 Sep 2004 04:01:31 -0400 (EDT) Received: by nile.gnat.com (Postfix, from userid 1345) id 69458F29C4; Wed, 29 Sep 2004 04:01:31 -0400 (EDT) From: Paul Hilfinger To: gdb-patches@sources.redhat.com Subject: [RFA]: Turn on initial Ada support in GDB (symtab portion) Message-Id: <20040929080131.69458F29C4@nile.gnat.com> Date: Wed, 29 Sep 2004 08:01:00 -0000 X-Virus-Scanned: by amavisd-new at nile.gnat.com X-SW-Source: 2004-09/txt/msg00468.txt.bz2 This is the symtab.c portion of our Ada-support patch. Andrew requested that I break it out and post it separately. My recollection was that it was approved some time ago, but no harm in making sure. See also my 9/27 posting. Still OK? Paul Hilfinger 2004-09-27 Paul N. Hilfinger * symtab.c: Add dependency on ada-lang.h. (symbol_natural_name, symbol_demangled_name) (symbol_search_name): Add Ada case. Index: gdb/symtab.c =================================================================== RCS file: /cvs/src/src/gdb/symtab.c,v retrieving revision 1.139 diff -u -p -r1.139 symtab.c --- gdb/symtab.c 20 Sep 2004 20:18:39 -0000 1.139 +++ gdb/symtab.c 27 Sep 2004 10:18:47 -0000 @@ -41,6 +41,7 @@ #include "source.h" #include "filenames.h" /* for FILENAME_CMP */ #include "objc-lang.h" +#include "ada-lang.h" #include "hashtab.h" @@ -634,17 +635,24 @@ symbol_init_demangled_name (struct gener char * symbol_natural_name (const struct general_symbol_info *gsymbol) { - if ((gsymbol->language == language_cplus - || gsymbol->language == language_java - || gsymbol->language == language_objc) - && (gsymbol->language_specific.cplus_specific.demangled_name != NULL)) + switch (gsymbol->language) { - return gsymbol->language_specific.cplus_specific.demangled_name; - } - else - { - return gsymbol->name; + case language_cplus: + case language_java: + case language_objc: + if (gsymbol->language_specific.cplus_specific.demangled_name != NULL) + return gsymbol->language_specific.cplus_specific.demangled_name; + break; + case language_ada: + if (gsymbol->language_specific.cplus_specific.demangled_name != NULL) + return gsymbol->language_specific.cplus_specific.demangled_name; + else + return ada_decode_symbol (gsymbol); + break; + default: + break; } + return gsymbol->name; } /* Return the demangled name for a symbol based on the language for @@ -652,13 +660,24 @@ symbol_natural_name (const struct genera char * symbol_demangled_name (struct general_symbol_info *gsymbol) { - if (gsymbol->language == language_cplus - || gsymbol->language == language_java - || gsymbol->language == language_objc) - return gsymbol->language_specific.cplus_specific.demangled_name; - - else - return NULL; + switch (gsymbol->language) + { + case language_cplus: + case language_java: + case language_objc: + if (gsymbol->language_specific.cplus_specific.demangled_name != NULL) + return gsymbol->language_specific.cplus_specific.demangled_name; + break; + case language_ada: + if (gsymbol->language_specific.cplus_specific.demangled_name != NULL) + return gsymbol->language_specific.cplus_specific.demangled_name; + else + return ada_decode_symbol (gsymbol); + break; + default: + break; + } + return NULL; } /* Return the search name of a symbol---generally the demangled or @@ -666,7 +685,10 @@ symbol_demangled_name (struct general_sy If there is no distinct demangled name, then returns the same value (same pointer) as SYMBOL_LINKAGE_NAME. */ char *symbol_search_name (const struct general_symbol_info *gsymbol) { - return symbol_natural_name (gsymbol); + if (gsymbol->language == language_ada) + return gsymbol->name; + else + return symbol_natural_name (gsymbol); } /* Initialize the structure fields to zero values. */