diff --git a/gdb/ChangeLog b/gdb/ChangeLog index bb6ce24a99..f49246c7f3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,14 @@ +2014-02-19 Tom Tromey + + PR build/7701: + * 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. + 2014-02-19 Tom Tromey * record.c (find_record_target): Use find_target_at. diff --git a/gdb/make-target-delegates b/gdb/make-target-delegates new file mode 100755 index 0000000000..f09f89d935 --- /dev/null +++ b/gdb/make-target-delegates @@ -0,0 +1,253 @@ +#!/usr/bin/perl + +# Copyright (C) 2013-2014 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_(?