Automatic date update in version.in
[binutils-gdb/blckswan.git] / gdb / regformats / regdat.sh
blob708af281a2519f6a0535ac2962a56bb5779d88bd
1 #!/bin/sh -u
3 # Register protocol definitions for GDB, the GNU debugger.
4 # Copyright (C) 2001-2022 Free Software Foundation, Inc.
6 # This file is part of GDB.
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 3 of the License, or
11 # (at your option) any later version.
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.
18 # You should have received a copy of the GNU General Public License
19 # along with this program. If not, see <http://www.gnu.org/licenses/>.
21 # Format of the input files
22 read="type entry"
24 do_read ()
26 type=""
27 entry=""
28 while read line
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
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'`"
47 OFS="${IFS}" ; IFS="[:]"
48 eval read ${read} <<EOF
49 ${line}
50 EOF
51 IFS="${OFS}"
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}
57 if eval test \"\${${r}}\" = \"\ \"
58 then
59 eval ${r}=""
61 done
63 break
65 done
66 if [ -n "${type}" ]
67 then
68 true
69 else
70 false
74 if test ! -r $1; then
75 echo "$0: Could not open $1." 1>&2
76 exit 1
79 copyright ()
81 cat <<EOF
82 /* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
84 /* A register protocol for GDB, the GNU debugger.
85 Copyright (C) 2001-2013 Free Software Foundation, Inc.
87 This file is part of GDB.
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
91 the Free Software Foundation; either version 3 of the License, or
92 (at your option) any later version.
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.
99 You should have received a copy of the GNU General Public License
100 along with this program. If not, see <http://www.gnu.org/licenses/>. */
102 /* This file was created with the aid of \`\`regdat.sh'' and \`\`$1''. */
108 exec > new-$2
109 copyright $1
110 echo '#include "server.h"'
111 echo '#include "regdef.h"'
112 echo '#include "tdesc.h"'
113 echo
114 offset=0
116 name=x
117 xmltarget=x
118 xmlarch=x
119 xmlosabi=x
120 expedite=x
121 feature=x
122 exec < $1
123 while do_read
125 if test "${type}" = "name"; then
126 name="${entry}"
128 echo "const struct target_desc *tdesc_${name};"
129 echo ""
131 # This is necessary for -Wmissing-declarations.
132 echo "void init_registers_${name} (void);"
134 echo "void"
135 echo "init_registers_${name} (void)"
136 echo "{"
137 echo " static struct target_desc tdesc_${name}_s;"
138 echo " struct target_desc *result = &tdesc_${name}_s;"
139 echo " struct tdesc_feature *feature = tdesc_create_feature (result, \"${name}\");"
140 continue
141 elif test "${type}" = "xmltarget"; then
142 xmltarget="${entry}"
143 continue
144 elif test "${type}" = "xmlarch"; then
145 xmlarch="${entry}"
146 continue
147 elif test "${type}" = "osabi"; then
148 xmlosabi="${entry}"
149 continue
150 elif test "${type}" = "expedite"; then
151 expedite="${entry}"
152 continue
153 elif test "${type}" = "feature"; then
154 feature="${entry}"
155 continue
156 elif test "${name}" = x; then
157 echo "$0: $1 does not specify \`\`name''." 1>&2
158 exit 1
159 else
160 echo " tdesc_create_reg (feature, \"${entry}\","
161 echo " 0, 0, NULL, ${type}, NULL);"
163 offset=`expr ${offset} + ${type}`
164 i=`expr $i + 1`
166 done
168 echo
169 echo "static const char *expedite_regs_${name}[] = { \"`echo ${expedite} | sed 's/,/", "/g'`\", 0 };"
171 echo "#ifndef IN_PROCESS_AGENT"
172 if test "${feature}" != x; then
173 echo "static const char *xmltarget_${name} = 0;"
174 elif test "${xmltarget}" = x; then
175 if test "${xmlarch}" = x && test "${xmlosabi}" = x; then
176 echo "static const char *xmltarget_${name} = 0;"
177 else
178 echo "static const char *xmltarget_${name} = \"@<target>\\"
179 if test "${xmlarch}" != x; then
180 echo "<architecture>${xmlarch}</architecture>\\"
182 if test "${xmlosabi}" != x; then
183 echo "<osabi>${xmlosabi}</osabi>\\"
185 echo "</target>\";"
187 else
188 echo "static const char *xmltarget_${name} = \"${xmltarget}\";"
190 echo
192 cat <<EOF
193 result->xmltarget = xmltarget_${name};
194 #endif
196 init_target_desc (result, expedite_regs_${name});
198 tdesc_${name} = result;
202 # close things off
203 exec 1>&2
204 mv -- "new-$2" "$2"