From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31721 invoked by alias); 13 Jan 2014 19:13:00 -0000 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 Received: (qmail 31634 invoked by uid 89); 13 Jan 2014 19:12:59 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.1 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 13 Jan 2014 19:12:57 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s0DJCtVN029783 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 13 Jan 2014 14:12:55 -0500 Received: from barimba.redhat.com (ovpn-113-85.phx2.redhat.com [10.3.113.85]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s0DJCptA016701; Mon, 13 Jan 2014 14:12:54 -0500 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [RFC 04/32] add make-target-delegates Date: Mon, 13 Jan 2014 19:13:00 -0000 Message-Id: <1389640367-5571-5-git-send-email-tromey@redhat.com> In-Reply-To: <1389640367-5571-1-git-send-email-tromey@redhat.com> References: <1389640367-5571-1-git-send-email-tromey@redhat.com> X-SW-Source: 2014-01/txt/msg00335.txt.bz2 This patch adds a new script, call make-target-delegates, which auto-generates some target delegation code based on annotations in target.h. This adds the new delegation macros, the new generated file, and adds the necessary calls to the new generated functions to target.c. It doesn't, however, add any actual annotations to the target methods, leaving these for separate patches. 2014-01-08 Tom Tromey * target-delegates.c: New file. * target.c: Include target-delegates.c. (init_dummy_target): Call install_dummy_methods. (complete_target_initialization): Call install_delegators. * target.h (TARGET_DEFAULT_IGNORE, TARGET_DEFAULT_NORETURN) (TARGET_DEFAULT_RETURN, TARGET_DEFAULT_FUNC): New defines. * make-target-delegates: New file. --- gdb/ChangeLog | 10 ++ gdb/make-target-delegates | 253 ++++++++++++++++++++++++++++++++++++++++++++++ gdb/target-delegates.c | 14 +++ gdb/target.c | 9 ++ gdb/target.h | 24 +++++ 5 files changed, 310 insertions(+) create mode 100755 gdb/make-target-delegates create mode 100644 gdb/target-delegates.c diff --git a/gdb/make-target-delegates b/gdb/make-target-delegates new file mode 100755 index 0000000..47f960c --- /dev/null +++ b/gdb/make-target-delegates @@ -0,0 +1,253 @@ +#!/usr/bin/perl + +# Copyright (C) 2013 Free Software Foundation, Inc. +# +# This file is part of GDB. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# Usage: +# make-target-delegates target.h > target-delegates.c + +# The line we search for in target.h that marks where we should start +# looking for methods. +$TRIGGER = qr,^struct target_ops$,; +# The end of the methods part. +$ENDER = qr,^\s*};$,; + +# Match a C symbol. +$SYMBOL = qr,[a-zA-Z_][a-zA-Z0-9_]*,; +# Match the name part of a method in struct target_ops. +$NAME_PART = qr,\(\*(?${SYMBOL}+)\)\s,; +# Match the start of arguments to a method. +$ARGS_PART = qr,(?\(.*)$,; +# Match indentation. +$INTRO_PART = qr,^\s*,; + +# Match the return type when it is "ordinary". +$SIMPLE_RETURN_PART = qr,[^\(]+,; +# Match the return type when it is a VEC. +$VEC_RETURN_PART = qr,VEC\s*\([^\)]+\)[^\(]*,; + +# Match the TARGET_DEFAULT_* attribute for a method. +$TARGET_DEFAULT_PART = qr,TARGET_DEFAULT_(?