From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19794 invoked by alias); 8 Oct 2002 23:42:54 -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 19759 invoked from network); 8 Oct 2002 23:42:53 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 8 Oct 2002 23:42:53 -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 g98NN9X13290 for ; Tue, 8 Oct 2002 19:23:09 -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 g98Ngml01493; Tue, 8 Oct 2002 19:42:48 -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 g98NglN29274; Tue, 8 Oct 2002 16:42:47 -0700 Message-ID: <3DA36D31.2947E451@redhat.com> Date: Tue, 08 Oct 2002 16:42: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 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/msg00190.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 Adam, this bit can't hurt anything, since it just adds some new enum values. Only one suggestion -- how about putting OP_THIS and OP_SELF consecutively, because they're so similar? Also please hold off on the export of evaluate_subexp -- let's handle that separately. Other than that, approved. Wait a couple days for objections, then you can commit it. > * expression.h: New ops NSSTRING, SELECTOR, MSGCALL, and SELF. > Index: gdb/expression.h > =================================================================== > RCS file: /cvs/src/src/gdb/expression.h,v > retrieving revision 1.4 > diff -u -p -r1.4 expression.h > --- gdb/expression.h 1 Aug 2002 17:18:32 -0000 1.4 > +++ gdb/expression.h 17 Sep 2002 19:30:05 -0000 > @@ -181,6 +181,12 @@ enum exp_opcode > making three exp_elements. */ > OP_FUNCALL, > > + /* OP_MSGCALL is followed by a string in the next exp_element and then an > + integer. The string is the selector string. The integer is the number > + of arguments to the message call. That many plus one values are used, > + the first one being the object pointer. This is an Objective C message */ > + OP_MSGCALL, > + > /* This is EXACTLY like OP_FUNCALL but is semantically different. > In F77, array subscript expressions, substring expressions > and function calls are all exactly the same syntactically. They may > @@ -273,11 +279,17 @@ enum exp_opcode > STRUCTOP_STRUCT, > STRUCTOP_PTR, > > - /* C++ */ > - /* OP_THIS is just a placeholder for the class instance variable. > + /* C++: OP_THIS is just a placeholder for the class instance variable. > It just comes in a tight (OP_THIS, OP_THIS) pair. */ > OP_THIS, > > + /* Objective C: "@selector" pseudo-operator */ > + OP_SELECTOR, > + > + /* Objective-C: OP_SELF is just a placeholder for the class instance > + variable. It just comes in a tight (OP_SELF, OP_SELF) pair. */ > + OP_SELF, > + > /* OP_SCOPE surrounds a type name and a field name. The type > name is encoded as one element, but the field name stays as > a string, which, of course, is variable length. */ > @@ -305,7 +317,10 @@ enum exp_opcode > OP_NAME, > > /* An unparsed expression. Used for Scheme (for now at least) */ > - OP_EXPRSTRING > + OP_EXPRSTRING, > + > + /* An Objective C Foundation Class NSString constant */ > + OP_NSSTRING, > }; > > union exp_element > @@ -369,6 +384,10 @@ enum noside > > extern struct value *evaluate_subexp_standard > (struct type *, struct expression *, int *, enum noside); > + > +extern struct value *evaluate_subexp (struct type *, struct expression *, > + int *, enum noside); > + > > /* From expprint.c */ >