From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22266 invoked by alias); 8 Nov 2002 07:44:41 -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 22138 invoked from network); 8 Nov 2002 07:44:39 -0000 Received: from unknown (HELO zenia.red-bean.com) (66.244.67.22) by sources.redhat.com with SMTP; 8 Nov 2002 07:44:39 -0000 Received: (from jimb@localhost) by zenia.red-bean.com (8.11.6/8.11.6) id gA87TXj06614; Fri, 8 Nov 2002 02:29:33 -0500 To: Adam Fedor Cc: gdb-patches@sources.redhat.com Subject: Re: [PATCH] Objective-C language support. References: <3D889A97.90202@doc.com> <3DA37290.74A48BF4@redhat.com> <3DAB86E8.2040704@doc.com> From: Jim Blandy Date: Thu, 07 Nov 2002 23:44:00 -0000 In-Reply-To: <3DAB86E8.2040704@doc.com> Message-ID: User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2.90 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2002-11/txt/msg00216.txt.bz2 Looks good to me. Adam Fedor writes: > Jim Blandy wrote: > > The function stabsread_objc_colon should be static to stabsread.c, no? > > If that's so, then it should be renamed to something like > > `find_name_end', with a comment above the strchr ('[') != 0 case > > explaining its relevance to Objective-C. Since this function gets > > called on every symbol, it's not an Objective-C specific function; > > only part of it is. > > The code needs a comment. Most of GDB's maintainers don't know > > Objective-C, so it would be helpful just to say something like, > > "Objective-C symbols can have names like -[foo:bar:baz]:skun > > Updated patch: > > 2002-10-14 Adam Fedor > > * stabsread.c (find_name_end): New function. > (define_symbol): Use it. > > > > > -- > Adam Fedor, Digital Optics Corp. | I'm glad I hate spinach, because > http://www.doc.com | if I didn't, I'd eat it, and you > | know how I hate the stuff. > Index: stabsread.c > =================================================================== > RCS file: /cvs/src/src/gdb/stabsread.c,v > retrieving revision 1.42 > diff -u -p -r1.42 stabsread.c > --- stabsread.c 11 Oct 2002 14:02:38 -0000 1.42 > +++ stabsread.c 15 Oct 2002 03:06:03 -0000 > @@ -169,6 +169,8 @@ static int > read_cfront_member_functions (struct field_info *, char **, > struct type *, struct objfile *); > > +static char *find_name_end (char *name); > + > /* end new functions added for cfront support */ > > static void > @@ -1271,7 +1273,7 @@ define_symbol (CORE_ADDR valu, char *str > struct objfile *objfile) > { > register struct symbol *sym; > - char *p = (char *) strchr (string, ':'); > + char *p = (char *) find_name_end (string); > int deftype; > int synonym = 0; > register int i; > @@ -2004,7 +2006,8 @@ define_symbol (CORE_ADDR valu, char *str > a typedef for "foo". Unfortunately, cfront never makes the typedef > when translating C++ into C. We make the typedef here so that > "ptype foo" works as expected for cfront translated code. */ > - else if (current_subfile->language == language_cplus) > + else if ((current_subfile->language == language_cplus) > + || (current_subfile->language == language_objc)) > synonym = 1; > > SYMBOL_TYPE (sym) = read_type (&p, objfile); > @@ -5613,6 +5616,32 @@ finish_global_stabs (struct objfile *obj > patch_block_stabs (global_symbols, global_stabs, objfile); > xfree (global_stabs); > global_stabs = NULL; > + } > +} > + > +static char * > +find_name_end (char *name) > +{ > + char *s = name; > + /* Find the end of the name, deliminated by a ':', but don't match > + ObjC symbols which look like -[Foo bar::]:bla. */ > + if (s[0] == '-' || *s == '+') > + { > + /* Must be an ObjC method symbol. */ > + if (s[1] != '[') > + { > + error ("invalid symbol name \"%s\"", name); > + } > + s = strchr (s, ']'); > + if (s == NULL) > + { > + error ("invalid symbol name \"%s\"", name); > + } > + return strchr (s, ':'); > + } > + else > + { > + return strchr (s, ':'); > } > } >