From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2867 invoked by alias); 21 Oct 2002 22:18:39 -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 2860 invoked from network); 21 Oct 2002 22:18:38 -0000 Received: from unknown (HELO touchme.toronto.redhat.com) (216.138.202.10) by sources.redhat.com with SMTP; 21 Oct 2002 22:18:38 -0000 Received: from localhost.redhat.com (to-dhcp51.toronto.redhat.com [172.16.14.151]) by touchme.toronto.redhat.com (Postfix) with ESMTP id 42319800084; Mon, 21 Oct 2002 18:18:38 -0400 (EDT) Received: from redhat.com (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id 5772C3E12; Mon, 21 Oct 2002 18:18:37 -0400 (EDT) Message-ID: <3DB47D3D.7020100@redhat.com> Date: Mon, 21 Oct 2002 15:18:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.0) Gecko/20020824 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Michael Snyder , Adam Fedor Cc: gdb-patches@sources.redhat.com Subject: Re: [PATCH] Objective-C language support. References: <3D889A97.90202@doc.com> <3DA36D31.2947E451@redhat.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2002-10/txt/msg00355.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, >> + 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 >> /* 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 */ >> > >