diff options
Diffstat (limited to 'gdb/features')
-rw-r--r-- | gdb/features/feature_to_c.sh | 77 | ||||
-rw-r--r-- | gdb/features/gdb-target.dtd | 11 | ||||
-rw-r--r-- | gdb/features/xinclude.dtd | 13 |
3 files changed, 98 insertions, 3 deletions
diff --git a/gdb/features/feature_to_c.sh b/gdb/features/feature_to_c.sh new file mode 100644 index 0000000..b737d0e --- /dev/null +++ b/gdb/features/feature_to_c.sh @@ -0,0 +1,77 @@ +#!/bin/sh + +# Convert text files to compilable C arrays. +# +# Copyright (C) 2007 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 2 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, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +output=$1 +shift + +if test -z "$output" || test -z "$1"; then + echo "Usage: $0 OUTPUTFILE INPUTFILE..." + exit 1 +fi + +if test -e "$output"; then + echo "Output file \"$output\" already exists; refusing to overwrite." + exit 1 +fi + +for input; do + arrayname=xml_feature_`echo $input | sed 's,.*/,,; s/[-.]/_/g'` + + ${AWK:-awk} 'BEGIN { n = 0 + print "static const char '$arrayname'[] = {" + for (i = 0; i < 255; i++) + _ord_[sprintf("%c", i)] = i + } { + split($0, line, ""); + printf " " + for (i = 1; i <= length($0); i++) { + c = line[i] + if (c == "'\''") { + printf "'\''\\'\'''\'', " + } else if (c == "\\") { + printf "'\''\\\\'\'', " + } else if (_ord_[c] >= 32 && _ord_[c] < 127) { + printf "'\''" c "'\'', " + } else { + printf "'\''\\%03o'\'', ", _ord_[c] + } + if (i % 10 == 0) + printf "\n " + } + printf "'\''\\n'\'', \n" + } END { + print " 0 };" + }' < $input >> $output +done + +echo >> $output +echo "const char *const xml_builtin[][2] = {" >> $output + +for input; do + basename=`echo $input | sed 's,.*/,,'` + arrayname=xml_feature_`echo $input | sed 's,.*/,,; s/[-.]/_/g'` + echo " { \"$basename\", $arrayname }," >> $output +done + +echo " { 0, 0 }" >> $output +echo "};" >> $output diff --git a/gdb/features/gdb-target.dtd b/gdb/features/gdb-target.dtd index 83a5a3d..8bcb049 100644 --- a/gdb/features/gdb-target.dtd +++ b/gdb/features/gdb-target.dtd @@ -1,9 +1,14 @@ +<!-- Copyright (C) 2007 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + <!-- The root element of a GDB target description is <target>. --> <!ELEMENT target (architecture?)> -<!ATTLIST target - xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"> <!ELEMENT architecture (#PCDATA)> - +<!ENTITY % xinclude SYSTEM "xinclude.dtd"> +%xinclude; diff --git a/gdb/features/xinclude.dtd b/gdb/features/xinclude.dtd new file mode 100644 index 0000000..abee8d4 --- /dev/null +++ b/gdb/features/xinclude.dtd @@ -0,0 +1,13 @@ +<!-- Copyright (C) 2007 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!-- GDB supports a subset of XInclude. Only whole documents can + be included, and only as XML. --> + +<!ELEMENT xi:include (EMPTY)> +<!ATTLIST xi:include + xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude" + href CDATA #REQUIRED> |