From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26396 invoked by alias); 7 Feb 2009 14:07:21 -0000 Received: (qmail 26387 invoked by uid 22791); 7 Feb 2009 14:07:20 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from fg-out-1718.google.com (HELO fg-out-1718.google.com) (72.14.220.158) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 07 Feb 2009 14:07:16 +0000 Received: by fg-out-1718.google.com with SMTP id l26so778787fgb.0 for ; Sat, 07 Feb 2009 06:07:12 -0800 (PST) MIME-Version: 1.0 Received: by 10.103.213.19 with SMTP id p19mr1255250muq.9.1234015632394; Sat, 07 Feb 2009 06:07:12 -0800 (PST) Date: Sat, 07 Feb 2009 14:07:00 -0000 Message-ID: <3d6b0edb0902070607x29177016m48a40bd198b88f7e@mail.gmail.com> Subject: New language support : Vala From: Abderrahim KITOUNI To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=0016367ed53c6a88c1046254a7b8 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-02/txt/msg00176.txt.bz2 --0016367ed53c6a88c1046254a7b8 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-length: 852 Hi all, Here is a patch I wrote last summer that adds support for a new language to gdb. It's called Vala [1], it's a high level programming language (like C# or Java) and compiles to GObject C. Here is a brief changelog : buildsym.c : deduce the language from filename (like f2c). dwarf2read.c : use that information (it's only used for stabs right now). c-lang.[ch] : make c_emit_char public. eval.c : use current language's value_of_this to evaluate OP_THIS. stack.c : don't print _tmp* variables in vala symtab.c, gdbtypes.c, linespec.c, valops.c: add some vala logic. defs.h, symfile.c : add the new language. vala-lang.[ch], vala-print.c : new files. I didn't write a parser, I just used the java one. The attached patch is made with gdb 6.8 [1] http://live.gnome.org/Vala Regards, Abderrahim P.S. I don't have a copyright assignment yet. --0016367ed53c6a88c1046254a7b8 Content-Type: application/x-gzip; name="gdb-vala.patch.gz" Content-Disposition: attachment; filename="gdb-vala.patch.gz" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fqwd03jw0 Content-length: 13701 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 fN9dkfBQU6/AF7QIgP6xl3T/A0w/muzClAAA --0016367ed53c6a88c1046254a7b8--