From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5285 invoked by alias); 21 Oct 2002 22:27:07 -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 5278 invoked from network); 21 Oct 2002 22:27:07 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 21 Oct 2002 22:27:07 -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 g9LM5qw18128 for ; Mon, 21 Oct 2002 18:05:52 -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 g9LMQsl03948; Mon, 21 Oct 2002 18:26:54 -0400 Received: from redhat.com (reddwarf.sfbay.redhat.com [172.16.24.50]) by potter.sfbay.redhat.com (8.11.6/8.11.6) with ESMTP id g9LMQrD16272; Mon, 21 Oct 2002 15:26:53 -0700 Message-ID: <3DB47F2D.8C77F0C2@redhat.com> Date: Mon, 21 Oct 2002 15:27:00 -0000 From: Michael Snyder Organization: Red Hat, Inc. X-Accept-Language: en MIME-Version: 1.0 To: Andrew Cagney CC: Adam Fedor , gdb-patches@sources.redhat.com Subject: Re: [PATCH] Objective-C language support. References: <3D889A97.90202@doc.com> <3DA36D31.2947E451@redhat.com> <3DB47D3D.7020100@redhat.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-SW-Source: 2002-10/txt/msg00357.txt.bz2 Andrew Cagney wrote: > > > 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, > >> + > > FYI, I think these should be renamed to OP_OBJC_xxxx so that it is very > clear that these have Objective C semantics. Otherwize I think it runs > the risk of people trying to re-use these operators in other languages. > > This would be consistent with the Ada OPS where I recommended > OP_ADA_xxxx for the Ada specific extensions to the operator table. > > Andrew OK with me. > >> /* 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 */ > >> > > > >