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