From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Received: (qmail 30149 invoked from network); 11 Jan 2003 04:01:47 -0000 Received: from unknown (63.119.183.65) by 209.249.29.67 with QMTP; 11 Jan 2003 04:01:47 -0000 Received: (qmail 24268 invoked from network); 11 Jan 2003 04:00:12 -0000 Received: from cpe-24-221-209-215.co.sprintbbd.net (HELO doc.com) (24.221.209.215) by external1 with SMTP; 11 Jan 2003 04:00:12 -0000 Message-ID: <3E1F971E.4020204@doc.com> Date: Sat, 11 Jan 2003 04:01:00 -0000 From: Adam Fedor User-Agent: Mozilla/5.0 (X11; U; Linux ppc; en-US; rv:1.1) Gecko/20020905 X-Accept-Language: en-us, en MIME-Version: 1.0 To: GDB Patches CC: Michael Snyder , Elena Zannoni Subject: Re: [RFA] Demangle ObjC symbols in symtab.c [4/5] References: <3E1616B7.1010001@doc.com> <3E1637DA.BFD960F9@redhat.com> Content-Type: multipart/mixed; boundary="------------060308070705010900070409" X-SW-Source: 2003-01/txt/msg00442.txt.bz2 This is a multi-part message in MIME format. --------------060308070705010900070409 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-length: 468 Michael Snyder wrote: > Adam Fedor wrote: > >>2003-01-03 Adam Fedor >> >> * symtab.c (symbol_init_demangled_name): Check for and demangle >> ObjC symbols. >> (make_symbol_completion_list): Look for ObjC symbols > > > Not to be too fussy, but these two changes seem unrelated. > It might be better to submit them separately. Easier to > review and approve. > Here's the first half of the patch again with a small change. --------------060308070705010900070409 Content-Type: text/plain; name="objc22a.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="objc22a.patch" Content-length: 2969 2003-01-10 Adam Fedor * symtab.c (symbol_init_demangled_name): Check for and demangle ObjC symbols. Index: symtab.c =================================================================== RCS file: /cvs/src/src/gdb/symtab.c,v retrieving revision 1.84 diff -u -p -r1.84 symtab.c --- symtab.c 2 Jan 2003 14:27:26 -0000 1.84 +++ symtab.c 11 Jan 2003 03:51:34 -0000 @@ -40,6 +40,7 @@ #include "linespec.h" #include "source.h" #include "filenames.h" /* for FILENAME_CMP */ +#include "objc-lang.h" #include "gdb_obstack.h" @@ -440,15 +441,31 @@ void symbol_init_demangled_name (struct general_symbol_info *gsymbol, struct obstack *obstack) { - char *mangled = gsymbol->name; - char *demangled = NULL; - if (gsymbol->language == language_unknown) gsymbol->language = language_auto; + + if (gsymbol->language == language_objc + || gsymbol->language == language_auto) + { + char *demangled = + objc_demangle (gsymbol->name); + if (demangled != NULL) + { + gsymbol->language = language_objc; + gsymbol->language_specific.objc_specific.demangled_name = + obsavestring (demangled, strlen (demangled), (obstack)); + xfree (demangled); + } + else + { + gsymbol->language_specific.objc_specific.demangled_name = NULL; + } + } + if (gsymbol->language == language_cplus || gsymbol->language == language_auto) { - demangled = + char *demangled = cplus_demangle (gsymbol->name, DMGL_PARAMS | DMGL_ANSI); if (demangled != NULL) { @@ -462,9 +479,10 @@ symbol_init_demangled_name (struct gener gsymbol->language_specific.cplus_specific.demangled_name = NULL; } } + if (gsymbol->language == language_java) { - demangled = + char *demangled = cplus_demangle (gsymbol->name, DMGL_PARAMS | DMGL_ANSI | DMGL_JAVA); if (demangled != NULL) @@ -831,7 +849,7 @@ lookup_symbol_aux (const char *name, con } #endif /* 0 */ - /* C++: If requested to do so by the caller, + /* C++/Java/Objective-C: If requested to do so by the caller, check to see if NAME is a field of `this'. */ if (is_a_field_of_this) { @@ -1483,9 +1501,9 @@ find_main_psymtab (void) for now we don't worry about the slight inefficiency of looking for a match we'll never find, since it will go pretty quick. Once the binary search terminates, we drop through and do a straight linear - search on the symbols. Each symbol which is marked as being a C++ - symbol (language_cplus set) has both the encoded and non-encoded names - tested for a match. + search on the symbols. Each symbol which is marked as being a ObjC/C++ + symbol (language_cplus or language_objc set) has both the encoded and + non-encoded names tested for a match. If MANGLED_NAME is non-NULL, verify that any symbol we find has this particular mangled name. --------------060308070705010900070409--