From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2978 invoked by alias); 9 Oct 2002 00:05:47 -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 2971 invoked from network); 9 Oct 2002 00:05:47 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 9 Oct 2002 00:05:47 -0000 Received: from int-mx2.corp.redhat.com (nat-pool-rdu-dmz.redhat.com [172.16.52.200]) by mx1.redhat.com (8.11.6/8.11.6) with ESMTP id g98Nk6X19524 for ; Tue, 8 Oct 2002 19:46:06 -0400 Received: from potter.sfbay.redhat.com (potter.sfbay.redhat.com [172.16.27.15]) by int-mx2.corp.redhat.com (8.11.6/8.11.6) with ESMTP id g9905hl01686; Tue, 8 Oct 2002 20:05:43 -0400 Received: from redhat.com (dhcp-172-16-25-149.sfbay.redhat.com [172.16.25.149]) by potter.sfbay.redhat.com (8.11.6/8.11.6) with ESMTP id g9905gN30044; Tue, 8 Oct 2002 17:05:42 -0700 Message-ID: <3DA37290.74A48BF4@redhat.com> Date: Tue, 08 Oct 2002 17:05:00 -0000 From: Michael Snyder Organization: Red Hat, Inc. X-Accept-Language: en MIME-Version: 1.0 To: Adam Fedor CC: gdb-patches@sources.redhat.com, jimb@redhat.com Subject: Re: [PATCH] Objective-C language support. References: <3D889A97.90202@doc.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-SW-Source: 2002-10/txt/msg00195.txt.bz2 Adam Fedor wrote: > > This patch adds Objective-C language support to gdb based upon a patch > provided by Apple Computer Inc from their version of gdb. Note that the > patch only contains changes to existing files. New files (objc-lang.h, > objc-lang.c, objc-exp.y) and a gdb.objc testsuite directory are located at > > ftp://ftp.gnustep.org/pub/gnustep/contrib/gdb-objc-patch.tar.gz Jim, can you look at this one too? I can explain it for you -- objective c symbols sometimes contain colons, which will trip up the stabs reader unles they're detected and allowed for. Adam, I think the function is not used outside of stabsread.c, so how about making it static, droping the "stabsread_" from its name, and omitting the declaration from stabsread.h? > * stabsread.c (stabsread_objc_colon): New function. > (define_symbol): Use it. > * stabsread.h: Declare it. > Index: gdb/stabsread.c > =================================================================== > RCS file: /cvs/src/src/gdb/stabsread.c,v > retrieving revision 1.39 > diff -u -p -r1.39 stabsread.c > --- gdb/stabsread.c 14 Sep 2002 02:09:39 -0000 1.39 > +++ gdb/stabsread.c 17 Sep 2002 19:31:03 -0000 > @@ -1273,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 *) stabsread_objc_colon (string); > int deftype; > int synonym = 0; > register int i; > @@ -2006,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); > @@ -5615,6 +5616,30 @@ finish_global_stabs (struct objfile *obj > patch_block_stabs (global_symbols, global_stabs, objfile); > xfree (global_stabs); > global_stabs = NULL; > + } > +} > + > +char * > +stabsread_objc_colon (name) > + char *name; > +{ > + char *s = name; > + if (s[0] == '-' || *s == '+') > + { > + 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, ':'); > } > } > > Index: gdb/stabsread.h > =================================================================== > RCS file: /cvs/src/src/gdb/stabsread.h,v > retrieving revision 1.8 > diff -u -p -r1.8 stabsread.h > --- gdb/stabsread.h 18 Jul 2002 17:22:50 -0000 1.8 > +++ gdb/stabsread.h 17 Sep 2002 19:31:04 -0000 > @@ -219,6 +219,8 @@ extern struct symbol *ref_search (int); > extern int resolve_cfront_continuation > (struct objfile *objfile, struct symbol *sym, char *p); > > +extern char *stabsread_objc_colon (char *name); > + > extern void free_header_files (void); > > extern void init_header_files (void);