]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/regformats/regdat.sh
Copyright updates for 2007.
[thirdparty/binutils-gdb.git] / gdb / regformats / regdat.sh
CommitLineData
3cf384d4
DJ
1#!/bin/sh -u
2
3# Register protocol definitions for GDB, the GNU debugger.
6aba47ca 4# Copyright 2001, 2002, 2007 Free Software Foundation, Inc.
3cf384d4
DJ
5#
6# This file is part of GDB.
7#
8# This program is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation; either version 2 of the License, or
11# (at your option) any later version.
12#
13# This program is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
17#
18# You should have received a copy of the GNU General Public License
19# along with this program; if not, write to the Free Software
20# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21
22move_if_change ()
23{
24 file=$1
25 if test -r ${file} && cmp -s "${file}" new-"${file}"
26 then
27 echo "${file} unchanged." 1>&2
28 else
29 mv new-"${file}" "${file}"
30 echo "${file} updated." 1>&2
31 fi
32}
33
34# Format of the input files
35read="type entry"
36
37do_read ()
38{
39 type=""
40 entry=""
41 while read line
42 do
43 if test "${line}" = ""
44 then
45 continue
46 elif test "${line}" = "#" -a "${comment}" = ""
47 then
48 continue
49 elif expr "${line}" : "#" > /dev/null
50 then
51 comment="${comment}
52${line}"
53 else
54
55 # The semantics of IFS varies between different SH's. Some
56 # treat ``::' as three fields while some treat it as just too.
57 # Work around this by eliminating ``::'' ....
58 line="`echo "${line}" | sed -e 's/::/: :/g' -e 's/::/: :/g'`"
59
60 OFS="${IFS}" ; IFS="[:]"
61 eval read ${read} <<EOF
62${line}
63EOF
64 IFS="${OFS}"
65
66 # .... and then going back through each field and strip out those
67 # that ended up with just that space character.
68 for r in ${read}
69 do
70 if eval test \"\${${r}}\" = \"\ \"
71 then
72 eval ${r}=""
73 fi
74 done
75
76 break
77 fi
78 done
79 if [ -n "${type}" ]
80 then
81 true
82 else
83 false
84 fi
85}
86
87if test ! -r $1; then
88 echo "$0: Could not open $1." 1>&2
89 exit 1
90fi
91
92copyright ()
93{
94cat <<EOF
95/* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
96
97/* A register protocol for GDB, the GNU debugger.
98 Copyright 2001, 2002 Free Software Foundation, Inc.
99
100 This file is part of GDB.
101
102 This program is free software; you can redistribute it and/or modify
103 it under the terms of the GNU General Public License as published by
104 the Free Software Foundation; either version 2 of the License, or
105 (at your option) any later version.
106
107 This program is distributed in the hope that it will be useful,
108 but WITHOUT ANY WARRANTY; without even the implied warranty of
109 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
110 GNU General Public License for more details.
111
112 You should have received a copy of the GNU General Public License
113 along with this program; if not, write to the Free Software
114 Foundation, Inc., 59 Temple Place - Suite 330,
115 Boston, MA 02111-1307, USA. */
116
117/* This file was created with the aid of \`\`regdat.sh'' and \`\`$1''. */
118
119EOF
120}
121
122
123exec > new-$2
124copyright $1
125echo '#include "regdef.h"'
0a30fbc4 126echo '#include "regcache.h"'
3cf384d4
DJ
127echo
128offset=0
129i=0
130name=x
131expedite=x
132exec < $1
133while do_read
134do
135 if test "${type}" = "name"; then
136 name="${entry}"
137 echo "struct reg regs_${name}[] = {"
138 continue
139 elif test "${type}" = "expedite"; then
140 expedite="${entry}"
141 continue
142 elif test "${name}" = x; then
143 echo "$0: $1 does not specify \`\`name''." 1>&2
144 exit 1
145 else
146 echo " { \"${entry}\", ${offset}, ${type} },"
147 offset=`expr ${offset} + ${type}`
148 i=`expr $i + 1`
149 fi
150done
151
152echo "};"
153echo
c638789f 154echo "const char *expedite_regs_${name}[] = { \"`echo ${expedite} | sed 's/,/", "/g'`\", 0 };"
0a30fbc4
DJ
155echo
156
157cat <<EOF
158void
159init_registers ()
160{
161 set_register_cache (regs_${name},
162 sizeof (regs_${name}) / sizeof (regs_${name}[0]));
163 gdbserver_expedite_regs = expedite_regs_${name};
164}
165EOF
3cf384d4
DJ
166
167# close things off
168exec 1>&2
169move_if_change $2