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