Spelling fixe in sim/ppc/vm.c
[deliverable/binutils-gdb.git] / gdb / gdbarch.sh
CommitLineData
66b43ecb 1#!/bin/sh -u
104c1213
JM
2
3# Architecture commands for GDB, the GNU debugger.
79d45cd4 4#
9b254dd1 5# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
7b6bb8da 6# 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
104c1213
JM
7#
8# This file is part of GDB.
9#
10# This program is free software; you can redistribute it and/or modify
11# it under the terms of the GNU General Public License as published by
50efebf8 12# the Free Software Foundation; either version 3 of the License, or
104c1213
JM
13# (at your option) any later version.
14#
15# This program is distributed in the hope that it will be useful,
16# but WITHOUT ANY WARRANTY; without even the implied warranty of
17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18# GNU General Public License for more details.
19#
20# You should have received a copy of the GNU General Public License
50efebf8 21# along with this program. If not, see <http://www.gnu.org/licenses/>.
104c1213 22
6e2c7fa1 23# Make certain that the script is not running in an internationalized
d8864532 24# environment.
0e05dfcb
DJ
25LANG=C ; export LANG
26LC_ALL=C ; export LC_ALL
d8864532
AC
27
28
59233f88
AC
29compare_new ()
30{
31 file=$1
66b43ecb 32 if test ! -r ${file}
59233f88
AC
33 then
34 echo "${file} missing? cp new-${file} ${file}" 1>&2
50248794 35 elif diff -u ${file} new-${file}
59233f88
AC
36 then
37 echo "${file} unchanged" 1>&2
38 else
39 echo "${file} has changed? cp new-${file} ${file}" 1>&2
40 fi
41}
42
43
44# Format of the input table
97030eea 45read="class returntype function formal actual staticdefault predefault postdefault invalid_p print garbage_at_eol"
c0e8c252
AC
46
47do_read ()
48{
34620563
AC
49 comment=""
50 class=""
51 while read line
52 do
53 if test "${line}" = ""
54 then
55 continue
56 elif test "${line}" = "#" -a "${comment}" = ""
f0d4cc9e 57 then
34620563
AC
58 continue
59 elif expr "${line}" : "#" > /dev/null
f0d4cc9e 60 then
34620563
AC
61 comment="${comment}
62${line}"
f0d4cc9e 63 else
3d9a5942
AC
64
65 # The semantics of IFS varies between different SH's. Some
66 # treat ``::' as three fields while some treat it as just too.
67 # Work around this by eliminating ``::'' ....
68 line="`echo "${line}" | sed -e 's/::/: :/g' -e 's/::/: :/g'`"
69
70 OFS="${IFS}" ; IFS="[:]"
34620563
AC
71 eval read ${read} <<EOF
72${line}
73EOF
74 IFS="${OFS}"
75
283354d8
AC
76 if test -n "${garbage_at_eol}"
77 then
78 echo "Garbage at end-of-line in ${line}" 1>&2
79 kill $$
80 exit 1
81 fi
82
3d9a5942
AC
83 # .... and then going back through each field and strip out those
84 # that ended up with just that space character.
85 for r in ${read}
86 do
87 if eval test \"\${${r}}\" = \"\ \"
88 then
89 eval ${r}=""
90 fi
91 done
92
a72293e2
AC
93 case "${class}" in
94 m ) staticdefault="${predefault}" ;;
95 M ) staticdefault="0" ;;
96 * ) test "${staticdefault}" || staticdefault=0 ;;
97 esac
06b25f14 98
ae45cd16
AC
99 case "${class}" in
100 F | V | M )
101 case "${invalid_p}" in
34620563 102 "" )
f7968451 103 if test -n "${predefault}"
34620563
AC
104 then
105 #invalid_p="gdbarch->${function} == ${predefault}"
ae45cd16 106 predicate="gdbarch->${function} != ${predefault}"
f7968451
AC
107 elif class_is_variable_p
108 then
109 predicate="gdbarch->${function} != 0"
110 elif class_is_function_p
111 then
112 predicate="gdbarch->${function} != NULL"
34620563
AC
113 fi
114 ;;
ae45cd16 115 * )
1e9f55d0 116 echo "Predicate function ${function} with invalid_p." 1>&2
ae45cd16
AC
117 kill $$
118 exit 1
119 ;;
120 esac
34620563
AC
121 esac
122
123 # PREDEFAULT is a valid fallback definition of MEMBER when
124 # multi-arch is not enabled. This ensures that the
125 # default value, when multi-arch is the same as the
126 # default value when not multi-arch. POSTDEFAULT is
127 # always a valid definition of MEMBER as this again
128 # ensures consistency.
129
72e74a21 130 if [ -n "${postdefault}" ]
34620563
AC
131 then
132 fallbackdefault="${postdefault}"
72e74a21 133 elif [ -n "${predefault}" ]
34620563
AC
134 then
135 fallbackdefault="${predefault}"
136 else
73d3c16e 137 fallbackdefault="0"
34620563
AC
138 fi
139
140 #NOT YET: See gdbarch.log for basic verification of
141 # database
142
143 break
f0d4cc9e 144 fi
34620563 145 done
72e74a21 146 if [ -n "${class}" ]
34620563
AC
147 then
148 true
c0e8c252
AC
149 else
150 false
151 fi
152}
153
104c1213 154
f0d4cc9e
AC
155fallback_default_p ()
156{
72e74a21
JB
157 [ -n "${postdefault}" -a "x${invalid_p}" != "x0" ] \
158 || [ -n "${predefault}" -a "x${invalid_p}" = "x0" ]
f0d4cc9e
AC
159}
160
161class_is_variable_p ()
162{
4a5c6a1d
AC
163 case "${class}" in
164 *v* | *V* ) true ;;
165 * ) false ;;
166 esac
f0d4cc9e
AC
167}
168
169class_is_function_p ()
170{
4a5c6a1d
AC
171 case "${class}" in
172 *f* | *F* | *m* | *M* ) true ;;
173 * ) false ;;
174 esac
175}
176
177class_is_multiarch_p ()
178{
179 case "${class}" in
180 *m* | *M* ) true ;;
181 * ) false ;;
182 esac
f0d4cc9e
AC
183}
184
185class_is_predicate_p ()
186{
4a5c6a1d
AC
187 case "${class}" in
188 *F* | *V* | *M* ) true ;;
189 * ) false ;;
190 esac
f0d4cc9e
AC
191}
192
193class_is_info_p ()
194{
4a5c6a1d
AC
195 case "${class}" in
196 *i* ) true ;;
197 * ) false ;;
198 esac
f0d4cc9e
AC
199}
200
201
cff3e48b
JM
202# dump out/verify the doco
203for field in ${read}
204do
205 case ${field} in
206
207 class ) : ;;
c4093a6a 208
c0e8c252
AC
209 # # -> line disable
210 # f -> function
211 # hiding a function
2ada493a
AC
212 # F -> function + predicate
213 # hiding a function + predicate to test function validity
c0e8c252
AC
214 # v -> variable
215 # hiding a variable
2ada493a
AC
216 # V -> variable + predicate
217 # hiding a variable + predicate to test variables validity
c0e8c252
AC
218 # i -> set from info
219 # hiding something from the ``struct info'' object
4a5c6a1d
AC
220 # m -> multi-arch function
221 # hiding a multi-arch function (parameterised with the architecture)
222 # M -> multi-arch function + predicate
223 # hiding a multi-arch function + predicate to test function validity
cff3e48b 224
cff3e48b
JM
225 returntype ) : ;;
226
c0e8c252 227 # For functions, the return type; for variables, the data type
cff3e48b
JM
228
229 function ) : ;;
230
c0e8c252
AC
231 # For functions, the member function name; for variables, the
232 # variable name. Member function names are always prefixed with
233 # ``gdbarch_'' for name-space purity.
cff3e48b
JM
234
235 formal ) : ;;
236
c0e8c252
AC
237 # The formal argument list. It is assumed that the formal
238 # argument list includes the actual name of each list element.
239 # A function with no arguments shall have ``void'' as the
240 # formal argument list.
cff3e48b
JM
241
242 actual ) : ;;
243
c0e8c252
AC
244 # The list of actual arguments. The arguments specified shall
245 # match the FORMAL list given above. Functions with out
246 # arguments leave this blank.
cff3e48b 247
0b8f9e4d 248 staticdefault ) : ;;
c0e8c252
AC
249
250 # To help with the GDB startup a static gdbarch object is
0b8f9e4d
AC
251 # created. STATICDEFAULT is the value to insert into that
252 # static gdbarch object. Since this a static object only
253 # simple expressions can be used.
cff3e48b 254
0b8f9e4d 255 # If STATICDEFAULT is empty, zero is used.
c0e8c252 256
0b8f9e4d 257 predefault ) : ;;
cff3e48b 258
10312cc4
AC
259 # An initial value to assign to MEMBER of the freshly
260 # malloc()ed gdbarch object. After initialization, the
261 # freshly malloc()ed object is passed to the target
262 # architecture code for further updates.
cff3e48b 263
0b8f9e4d
AC
264 # If PREDEFAULT is empty, zero is used.
265
10312cc4
AC
266 # A non-empty PREDEFAULT, an empty POSTDEFAULT and a zero
267 # INVALID_P are specified, PREDEFAULT will be used as the
268 # default for the non- multi-arch target.
269
270 # A zero PREDEFAULT function will force the fallback to call
271 # internal_error().
f0d4cc9e
AC
272
273 # Variable declarations can refer to ``gdbarch'' which will
274 # contain the current architecture. Care should be taken.
0b8f9e4d
AC
275
276 postdefault ) : ;;
277
278 # A value to assign to MEMBER of the new gdbarch object should
10312cc4
AC
279 # the target architecture code fail to change the PREDEFAULT
280 # value.
0b8f9e4d
AC
281
282 # If POSTDEFAULT is empty, no post update is performed.
283
284 # If both INVALID_P and POSTDEFAULT are non-empty then
285 # INVALID_P will be used to determine if MEMBER should be
286 # changed to POSTDEFAULT.
287
10312cc4
AC
288 # If a non-empty POSTDEFAULT and a zero INVALID_P are
289 # specified, POSTDEFAULT will be used as the default for the
290 # non- multi-arch target (regardless of the value of
291 # PREDEFAULT).
292
f0d4cc9e
AC
293 # You cannot specify both a zero INVALID_P and a POSTDEFAULT.
294
be7811ad 295 # Variable declarations can refer to ``gdbarch'' which
db446970
AC
296 # will contain the current architecture. Care should be
297 # taken.
cff3e48b 298
c4093a6a 299 invalid_p ) : ;;
cff3e48b 300
0b8f9e4d 301 # A predicate equation that validates MEMBER. Non-zero is
c0e8c252 302 # returned if the code creating the new architecture failed to
0b8f9e4d
AC
303 # initialize MEMBER or the initialized the member is invalid.
304 # If POSTDEFAULT is non-empty then MEMBER will be updated to
305 # that value. If POSTDEFAULT is empty then internal_error()
306 # is called.
307
308 # If INVALID_P is empty, a check that MEMBER is no longer
309 # equal to PREDEFAULT is used.
310
f0d4cc9e
AC
311 # The expression ``0'' disables the INVALID_P check making
312 # PREDEFAULT a legitimate value.
0b8f9e4d
AC
313
314 # See also PREDEFAULT and POSTDEFAULT.
cff3e48b 315
cff3e48b
JM
316 print ) : ;;
317
2f9b146e
AC
318 # An optional expression that convers MEMBER to a value
319 # suitable for formatting using %s.
c0e8c252 320
0b1553bc
UW
321 # If PRINT is empty, core_addr_to_string_nz (for CORE_ADDR)
322 # or plongest (anything else) is used.
cff3e48b 323
283354d8 324 garbage_at_eol ) : ;;
0b8f9e4d 325
283354d8 326 # Catches stray fields.
cff3e48b 327
50248794
AC
328 *)
329 echo "Bad field ${field}"
330 exit 1;;
cff3e48b
JM
331 esac
332done
333
cff3e48b 334
104c1213
JM
335function_list ()
336{
cff3e48b 337 # See below (DOCO) for description of each field
34620563 338 cat <<EOF
be7811ad 339i:const struct bfd_arch_info *:bfd_arch_info:::&bfd_default_arch_struct::::gdbarch_bfd_arch_info (gdbarch)->printable_name
104c1213 340#
97030eea 341i:int:byte_order:::BFD_ENDIAN_BIG
9d4fde75 342i:int:byte_order_for_code:::BFD_ENDIAN_BIG
4be87837 343#
97030eea 344i:enum gdb_osabi:osabi:::GDB_OSABI_UNKNOWN
424163ea 345#
30737ed9 346i:const struct target_desc *:target_desc:::::::host_address_to_string (gdbarch->target_desc)
32c9a795
MD
347
348# The bit byte-order has to do just with numbering of bits in debugging symbols
349# and such. Conceptually, it's quite separate from byte/word byte order.
350v:int:bits_big_endian:::1:(gdbarch->byte_order == BFD_ENDIAN_BIG)::0
351
66b43ecb
AC
352# Number of bits in a char or unsigned char for the target machine.
353# Just like CHAR_BIT in <limits.h> but describes the target machine.
57010b1c 354# v:TARGET_CHAR_BIT:int:char_bit::::8 * sizeof (char):8::0:
66b43ecb
AC
355#
356# Number of bits in a short or unsigned short for the target machine.
97030eea 357v:int:short_bit:::8 * sizeof (short):2*TARGET_CHAR_BIT::0
66b43ecb 358# Number of bits in an int or unsigned int for the target machine.
97030eea 359v:int:int_bit:::8 * sizeof (int):4*TARGET_CHAR_BIT::0
66b43ecb 360# Number of bits in a long or unsigned long for the target machine.
97030eea 361v:int:long_bit:::8 * sizeof (long):4*TARGET_CHAR_BIT::0
66b43ecb
AC
362# Number of bits in a long long or unsigned long long for the target
363# machine.
be7811ad 364v:int:long_long_bit:::8 * sizeof (LONGEST):2*gdbarch->long_bit::0
456fcf94 365
f9e9243a
UW
366# The ABI default bit-size and format for "half", "float", "double", and
367# "long double". These bit/format pairs should eventually be combined
368# into a single object. For the moment, just initialize them as a pair.
8da61cc4
DJ
369# Each format describes both the big and little endian layouts (if
370# useful).
456fcf94 371
f9e9243a
UW
372v:int:half_bit:::16:2*TARGET_CHAR_BIT::0
373v:const struct floatformat **:half_format:::::floatformats_ieee_half::pformat (gdbarch->half_format)
97030eea 374v:int:float_bit:::8 * sizeof (float):4*TARGET_CHAR_BIT::0
be7811ad 375v:const struct floatformat **:float_format:::::floatformats_ieee_single::pformat (gdbarch->float_format)
97030eea 376v:int:double_bit:::8 * sizeof (double):8*TARGET_CHAR_BIT::0
be7811ad 377v:const struct floatformat **:double_format:::::floatformats_ieee_double::pformat (gdbarch->double_format)
97030eea 378v:int:long_double_bit:::8 * sizeof (long double):8*TARGET_CHAR_BIT::0
be7811ad 379v:const struct floatformat **:long_double_format:::::floatformats_ieee_double::pformat (gdbarch->long_double_format)
456fcf94 380
52204a0b
DT
381# For most targets, a pointer on the target and its representation as an
382# address in GDB have the same size and "look the same". For such a
17a912b6 383# target, you need only set gdbarch_ptr_bit and gdbarch_addr_bit
52204a0b
DT
384# / addr_bit will be set from it.
385#
17a912b6 386# If gdbarch_ptr_bit and gdbarch_addr_bit are different, you'll probably
8da614df
CV
387# also need to set gdbarch_dwarf2_addr_size, gdbarch_pointer_to_address and
388# gdbarch_address_to_pointer as well.
52204a0b
DT
389#
390# ptr_bit is the size of a pointer on the target
be7811ad 391v:int:ptr_bit:::8 * sizeof (void*):gdbarch->int_bit::0
52204a0b 392# addr_bit is the size of a target address as represented in gdb
be7811ad 393v:int:addr_bit:::8 * sizeof (void*):0:gdbarch_ptr_bit (gdbarch):
104c1213 394#
8da614df
CV
395# dwarf2_addr_size is the target address size as used in the Dwarf debug
396# info. For .debug_frame FDEs, this is supposed to be the target address
397# size from the associated CU header, and which is equivalent to the
398# DWARF2_ADDR_SIZE as defined by the target specific GCC back-end.
399# Unfortunately there is no good way to determine this value. Therefore
400# dwarf2_addr_size simply defaults to the target pointer size.
401#
402# dwarf2_addr_size is not used for .eh_frame FDEs, which are generally
403# defined using the target's pointer size so far.
404#
405# Note that dwarf2_addr_size only needs to be redefined by a target if the
406# GCC back-end defines a DWARF2_ADDR_SIZE other than the target pointer size,
407# and if Dwarf versions < 4 need to be supported.
408v:int:dwarf2_addr_size:::sizeof (void*):0:gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT:
409#
4e409299 410# One if \`char' acts like \`signed char', zero if \`unsigned char'.
97030eea 411v:int:char_signed:::1:-1:1
4e409299 412#
97030eea
UW
413F:CORE_ADDR:read_pc:struct regcache *regcache:regcache
414F:void:write_pc:struct regcache *regcache, CORE_ADDR val:regcache, val
39d4ef09
AC
415# Function for getting target's idea of a frame pointer. FIXME: GDB's
416# whole scheme for dealing with "frames" and "frame pointers" needs a
417# serious shakedown.
a54fba4c 418m:void:virtual_frame_pointer:CORE_ADDR pc, int *frame_regnum, LONGEST *frame_offset:pc, frame_regnum, frame_offset:0:legacy_virtual_frame_pointer::0
66b43ecb 419#
05d1431c 420M:enum register_status:pseudo_register_read:struct regcache *regcache, int cookednum, gdb_byte *buf:regcache, cookednum, buf
97030eea 421M:void:pseudo_register_write:struct regcache *regcache, int cookednum, const gdb_byte *buf:regcache, cookednum, buf
61a0eb5b 422#
97030eea 423v:int:num_regs:::0:-1
0aba1244
EZ
424# This macro gives the number of pseudo-registers that live in the
425# register namespace but do not get fetched or stored on the target.
3d9a5942
AC
426# These pseudo-registers may be aliases for other registers,
427# combinations of other registers, or they may be computed by GDB.
97030eea 428v:int:num_pseudo_regs:::0:0::0
c2169756 429
175ff332
HZ
430# Assemble agent expression bytecode to collect pseudo-register REG.
431# Return -1 if something goes wrong, 0 otherwise.
432M:int:ax_pseudo_register_collect:struct agent_expr *ax, int reg:ax, reg
433
434# Assemble agent expression bytecode to push the value of pseudo-register
435# REG on the interpreter stack.
436# Return -1 if something goes wrong, 0 otherwise.
437M:int:ax_pseudo_register_push_stack:struct agent_expr *ax, int reg:ax, reg
438
c2169756
AC
439# GDB's standard (or well known) register numbers. These can map onto
440# a real register or a pseudo (computed) register or not be defined at
1200cd6e 441# all (-1).
3e8c568d 442# gdbarch_sp_regnum will hopefully be replaced by UNWIND_SP.
97030eea
UW
443v:int:sp_regnum:::-1:-1::0
444v:int:pc_regnum:::-1:-1::0
445v:int:ps_regnum:::-1:-1::0
446v:int:fp0_regnum:::0:-1::0
88c72b7d 447# Convert stab register number (from \`r\' declaration) to a gdb REGNUM.
d3f73121 448m:int:stab_reg_to_regnum:int stab_regnr:stab_regnr::no_op_reg_to_regnum::0
88c72b7d 449# Provide a default mapping from a ecoff register number to a gdb REGNUM.
d3f73121 450m:int:ecoff_reg_to_regnum:int ecoff_regnr:ecoff_regnr::no_op_reg_to_regnum::0
88c72b7d 451# Convert from an sdb register number to an internal gdb register number.
d3f73121 452m:int:sdb_reg_to_regnum:int sdb_regnr:sdb_regnr::no_op_reg_to_regnum::0
ba2b1c56 453# Provide a default mapping from a DWARF2 register number to a gdb REGNUM.
d3f73121 454m:int:dwarf2_reg_to_regnum:int dwarf2_regnr:dwarf2_regnr::no_op_reg_to_regnum::0
d93859e2 455m:const char *:register_name:int regnr:regnr::0
9c04cab7 456
7b9ee6a8
DJ
457# Return the type of a register specified by the architecture. Only
458# the register cache should call this function directly; others should
459# use "register_type".
97030eea 460M:struct type *:register_type:int reg_nr:reg_nr
9c04cab7 461
f3be58bc 462# See gdbint.texinfo, and PUSH_DUMMY_CALL.
669fac23
DJ
463M:struct frame_id:dummy_id:struct frame_info *this_frame:this_frame
464# Implement DUMMY_ID and PUSH_DUMMY_CALL, then delete
064f5156 465# deprecated_fp_regnum.
97030eea 466v:int:deprecated_fp_regnum:::-1:-1::0
f3be58bc 467
a86c5fc9 468# See gdbint.texinfo. See infcall.c.
97030eea
UW
469M:CORE_ADDR:push_dummy_call:struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr:function, regcache, bp_addr, nargs, args, sp, struct_return, struct_addr
470v:int:call_dummy_location::::AT_ENTRY_POINT::0
471M:CORE_ADDR:push_dummy_code:CORE_ADDR sp, CORE_ADDR funaddr, struct value **args, int nargs, struct type *value_type, CORE_ADDR *real_pc, CORE_ADDR *bp_addr, struct regcache *regcache:sp, funaddr, args, nargs, value_type, real_pc, bp_addr, regcache
57010b1c 472
97030eea
UW
473m:void:print_registers_info:struct ui_file *file, struct frame_info *frame, int regnum, int all:file, frame, regnum, all::default_print_registers_info::0
474M:void:print_float_info:struct ui_file *file, struct frame_info *frame, const char *args:file, frame, args
475M:void:print_vector_info:struct ui_file *file, struct frame_info *frame, const char *args:file, frame, args
7c7651b2
AC
476# MAP a GDB RAW register number onto a simulator register number. See
477# also include/...-sim.h.
e7faf938 478m:int:register_sim_regno:int reg_nr:reg_nr::legacy_register_sim_regno::0
64a3914f
MD
479m:int:cannot_fetch_register:int regnum:regnum::cannot_register_not::0
480m:int:cannot_store_register:int regnum:regnum::cannot_register_not::0
9df628e0 481# setjmp/longjmp support.
97030eea 482F:int:get_longjmp_target:struct frame_info *frame, CORE_ADDR *pc:frame, pc
104c1213 483#
97030eea 484v:int:believe_pcc_promotion:::::::
104c1213 485#
0abe36f5 486m:int:convert_register_p:int regnum, struct type *type:regnum, type:0:generic_convert_register_p::0
8dccd430 487f:int:register_to_value:struct frame_info *frame, int regnum, struct type *type, gdb_byte *buf, int *optimizedp, int *unavailablep:frame, regnum, type, buf, optimizedp, unavailablep:0
97030eea 488f:void:value_to_register:struct frame_info *frame, int regnum, struct type *type, const gdb_byte *buf:frame, regnum, type, buf:0
9acbedc0
UW
489# Construct a value representing the contents of register REGNUM in
490# frame FRAME, interpreted as type TYPE. The routine needs to
491# allocate and return a struct value with all value attributes
492# (but not the value contents) filled in.
97030eea 493f:struct value *:value_from_register:struct type *type, int regnum, struct frame_info *frame:type, regnum, frame::default_value_from_register::0
104c1213 494#
9898f801
UW
495m:CORE_ADDR:pointer_to_address:struct type *type, const gdb_byte *buf:type, buf::unsigned_pointer_to_address::0
496m:void:address_to_pointer:struct type *type, gdb_byte *buf, CORE_ADDR addr:type, buf, addr::unsigned_address_to_pointer::0
97030eea 497M:CORE_ADDR:integer_to_address:struct type *type, const gdb_byte *buf:type, buf
92ad9cd9 498
ea42b34a
JB
499# Return the return-value convention that will be used by FUNCTYPE
500# to return a value of type VALTYPE. FUNCTYPE may be NULL in which
501# case the return convention is computed based only on VALTYPE.
502#
503# If READBUF is not NULL, extract the return value and save it in this buffer.
504#
505# If WRITEBUF is not NULL, it contains a return value which will be
506# stored into the appropriate register. This can be used when we want
507# to force the value returned by a function (see the "return" command
508# for instance).
c055b101 509M:enum return_value_convention:return_value:struct type *functype, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf:functype, valtype, regcache, readbuf, writebuf
92ad9cd9 510
6093d2eb 511m:CORE_ADDR:skip_prologue:CORE_ADDR ip:ip:0:0
4309257c 512M:CORE_ADDR:skip_main_prologue:CORE_ADDR ip:ip
97030eea 513f:int:inner_than:CORE_ADDR lhs, CORE_ADDR rhs:lhs, rhs:0:0
67d57894 514m:const gdb_byte *:breakpoint_from_pc:CORE_ADDR *pcptr, int *lenptr:pcptr, lenptr::0:
a1dcb23a
DJ
515# Return the adjusted address and kind to use for Z0/Z1 packets.
516# KIND is usually the memory length of the breakpoint, but may have a
517# different target-specific meaning.
0e05dfcb 518m:void:remote_breakpoint_from_pc:CORE_ADDR *pcptr, int *kindptr:pcptr, kindptr:0:default_remote_breakpoint_from_pc::0
97030eea 519M:CORE_ADDR:adjust_breakpoint_address:CORE_ADDR bpaddr:bpaddr
ae4b2284
MD
520m:int:memory_insert_breakpoint:struct bp_target_info *bp_tgt:bp_tgt:0:default_memory_insert_breakpoint::0
521m:int:memory_remove_breakpoint:struct bp_target_info *bp_tgt:bp_tgt:0:default_memory_remove_breakpoint::0
97030eea 522v:CORE_ADDR:decr_pc_after_break:::0:::0
782263ab
AC
523
524# A function can be addressed by either it's "pointer" (possibly a
525# descriptor address) or "entry point" (first executable instruction).
526# The method "convert_from_func_ptr_addr" converting the former to the
cbf3b44a 527# latter. gdbarch_deprecated_function_start_offset is being used to implement
782263ab
AC
528# a simplified subset of that functionality - the function's address
529# corresponds to the "function pointer" and the function's start
530# corresponds to the "function entry point" - and hence is redundant.
531
97030eea 532v:CORE_ADDR:deprecated_function_start_offset:::0:::0
782263ab 533
123dc839
DJ
534# Return the remote protocol register number associated with this
535# register. Normally the identity mapping.
97030eea 536m:int:remote_register_number:int regno:regno::default_remote_register_number::0
123dc839 537
b2756930 538# Fetch the target specific address used to represent a load module.
97030eea 539F:CORE_ADDR:fetch_tls_load_module_address:struct objfile *objfile:objfile
104c1213 540#
97030eea
UW
541v:CORE_ADDR:frame_args_skip:::0:::0
542M:CORE_ADDR:unwind_pc:struct frame_info *next_frame:next_frame
543M:CORE_ADDR:unwind_sp:struct frame_info *next_frame:next_frame
42efa47a
AC
544# DEPRECATED_FRAME_LOCALS_ADDRESS as been replaced by the per-frame
545# frame-base. Enable frame-base before frame-unwind.
97030eea 546F:int:frame_num_args:struct frame_info *frame:frame
104c1213 547#
97030eea
UW
548M:CORE_ADDR:frame_align:CORE_ADDR address:address
549m:int:stabs_argument_has_addr:struct type *type:type::default_stabs_argument_has_addr::0
550v:int:frame_red_zone_size
f0d4cc9e 551#
97030eea 552m:CORE_ADDR:convert_from_func_ptr_addr:CORE_ADDR addr, struct target_ops *targ:addr, targ::convert_from_func_ptr_addr_identity::0
875e1767
AC
553# On some machines there are bits in addresses which are not really
554# part of the address, but are used by the kernel, the hardware, etc.
bf6ae464 555# for special purposes. gdbarch_addr_bits_remove takes out any such bits so
875e1767
AC
556# we get a "real" address such as one would find in a symbol table.
557# This is used only for addresses of instructions, and even then I'm
558# not sure it's used in all contexts. It exists to deal with there
559# being a few stray bits in the PC which would mislead us, not as some
560# sort of generic thing to handle alignment or segmentation (it's
561# possible it should be in TARGET_READ_PC instead).
24568a2c 562m:CORE_ADDR:addr_bits_remove:CORE_ADDR addr:addr::core_addr_identity::0
260edbc2 563# It is not at all clear why gdbarch_smash_text_address is not folded into
bf6ae464 564# gdbarch_addr_bits_remove.
24568a2c 565m:CORE_ADDR:smash_text_address:CORE_ADDR addr:addr::core_addr_identity::0
e6590a1b
UW
566
567# FIXME/cagney/2001-01-18: This should be split in two. A target method that
568# indicates if the target needs software single step. An ISA method to
569# implement it.
570#
571# FIXME/cagney/2001-01-18: This should be replaced with something that inserts
572# breakpoints using the breakpoint system instead of blatting memory directly
573# (as with rs6000).
64c4637f 574#
e6590a1b
UW
575# FIXME/cagney/2001-01-18: The logic is backwards. It should be asking if the
576# target can single step. If not, then implement single step using breakpoints.
64c4637f 577#
e6590a1b
UW
578# A return value of 1 means that the software_single_step breakpoints
579# were inserted; 0 means they were not.
97030eea 580F:int:software_single_step:struct frame_info *frame:frame
e6590a1b 581
3352ef37
AC
582# Return non-zero if the processor is executing a delay slot and a
583# further single-step is needed before the instruction finishes.
97030eea 584M:int:single_step_through_delay:struct frame_info *frame:frame
f6c40618 585# FIXME: cagney/2003-08-28: Need to find a better way of selecting the
b2fa5097 586# disassembler. Perhaps objdump can handle it?
97030eea
UW
587f:int:print_insn:bfd_vma vma, struct disassemble_info *info:vma, info::0:
588f:CORE_ADDR:skip_trampoline_code:struct frame_info *frame, CORE_ADDR pc:frame, pc::generic_skip_trampoline_code::0
d50355b6
MS
589
590
cfd8ab24 591# If in_solib_dynsym_resolve_code() returns true, and SKIP_SOLIB_RESOLVER
dea0c52f
MK
592# evaluates non-zero, this is the address where the debugger will place
593# a step-resume breakpoint to get us past the dynamic linker.
97030eea 594m:CORE_ADDR:skip_solib_resolver:CORE_ADDR pc:pc::generic_skip_solib_resolver::0
d50355b6 595# Some systems also have trampoline code for returning from shared libs.
e17a4113 596m:int:in_solib_return_trampoline:CORE_ADDR pc, char *name:pc, name::generic_in_solib_return_trampoline::0
d50355b6 597
c12260ac
CV
598# A target might have problems with watchpoints as soon as the stack
599# frame of the current function has been destroyed. This mostly happens
600# as the first action in a funtion's epilogue. in_function_epilogue_p()
601# is defined to return a non-zero value if either the given addr is one
602# instruction after the stack destroying instruction up to the trailing
603# return instruction or if we can figure out that the stack frame has
604# already been invalidated regardless of the value of addr. Targets
605# which don't suffer from that problem could just let this functionality
606# untouched.
97030eea 607m:int:in_function_epilogue_p:CORE_ADDR addr:addr:0:generic_in_function_epilogue_p::0
97030eea
UW
608f:void:elf_make_msymbol_special:asymbol *sym, struct minimal_symbol *msym:sym, msym::default_elf_make_msymbol_special::0
609f:void:coff_make_msymbol_special:int val, struct minimal_symbol *msym:val, msym::default_coff_make_msymbol_special::0
97030eea
UW
610v:int:cannot_step_breakpoint:::0:0::0
611v:int:have_nonsteppable_watchpoint:::0:0::0
612F:int:address_class_type_flags:int byte_size, int dwarf2_addr_class:byte_size, dwarf2_addr_class
613M:const char *:address_class_type_flags_to_name:int type_flags:type_flags
614M:int:address_class_name_to_type_flags:const char *name, int *type_flags_ptr:name, type_flags_ptr
b59ff9d5 615# Is a register in a group
97030eea 616m:int:register_reggroup_p:int regnum, struct reggroup *reggroup:regnum, reggroup::default_register_reggroup_p::0
f6214256 617# Fetch the pointer to the ith function argument.
97030eea 618F:CORE_ADDR:fetch_pointer_argument:struct frame_info *frame, int argi, struct type *type:frame, argi, type
6ce6d90f
MK
619
620# Return the appropriate register set for a core file section with
621# name SECT_NAME and size SECT_SIZE.
97030eea 622M:const struct regset *:regset_from_core_section:const char *sect_name, size_t sect_size:sect_name, sect_size
0d5de010 623
17ea7499
CES
624# Supported register notes in a core file.
625v:struct core_regset_section *:core_regset_sections:const char *name, int len::::::host_address_to_string (gdbarch->core_regset_sections)
626
de584861
PA
627# Read offset OFFSET of TARGET_OBJECT_LIBRARIES formatted shared libraries list from
628# core file into buffer READBUF with length LEN.
97030eea 629M:LONGEST:core_xfer_shared_libraries:gdb_byte *readbuf, ULONGEST offset, LONGEST len:readbuf, offset, len
de584861 630
c0edd9ed 631# How the core target converts a PTID from a core file to a string.
28439f5e
PA
632M:char *:core_pid_to_str:ptid_t ptid:ptid
633
a78c2d62
UW
634# BFD target to use when generating a core file.
635V:const char *:gcore_bfd_target:::0:0:::gdbarch->gcore_bfd_target
636
0d5de010
DJ
637# If the elements of C++ vtables are in-place function descriptors rather
638# than normal function pointers (which may point to code or a descriptor),
639# set this to one.
97030eea 640v:int:vtable_function_descriptors:::0:0::0
0d5de010
DJ
641
642# Set if the least significant bit of the delta is used instead of the least
643# significant bit of the pfn for pointers to virtual member functions.
97030eea 644v:int:vbit_in_delta:::0:0::0
6d350bb5
UW
645
646# Advance PC to next instruction in order to skip a permanent breakpoint.
97030eea 647F:void:skip_permanent_breakpoint:struct regcache *regcache:regcache
1c772458 648
237fc4c9
PA
649# The maximum length of an instruction on this architecture.
650V:ULONGEST:max_insn_length:::0:0
651
652# Copy the instruction at FROM to TO, and make any adjustments
653# necessary to single-step it at that address.
654#
655# REGS holds the state the thread's registers will have before
656# executing the copied instruction; the PC in REGS will refer to FROM,
657# not the copy at TO. The caller should update it to point at TO later.
658#
659# Return a pointer to data of the architecture's choice to be passed
660# to gdbarch_displaced_step_fixup. Or, return NULL to indicate that
661# the instruction's effects have been completely simulated, with the
662# resulting state written back to REGS.
663#
664# For a general explanation of displaced stepping and how GDB uses it,
665# see the comments in infrun.c.
666#
667# The TO area is only guaranteed to have space for
668# gdbarch_max_insn_length (arch) bytes, so this function must not
669# write more bytes than that to that area.
670#
671# If you do not provide this function, GDB assumes that the
672# architecture does not support displaced stepping.
673#
674# If your architecture doesn't need to adjust instructions before
675# single-stepping them, consider using simple_displaced_step_copy_insn
676# here.
677M:struct displaced_step_closure *:displaced_step_copy_insn:CORE_ADDR from, CORE_ADDR to, struct regcache *regs:from, to, regs
678
99e40580
UW
679# Return true if GDB should use hardware single-stepping to execute
680# the displaced instruction identified by CLOSURE. If false,
681# GDB will simply restart execution at the displaced instruction
682# location, and it is up to the target to ensure GDB will receive
683# control again (e.g. by placing a software breakpoint instruction
684# into the displaced instruction buffer).
685#
686# The default implementation returns false on all targets that
687# provide a gdbarch_software_single_step routine, and true otherwise.
688m:int:displaced_step_hw_singlestep:struct displaced_step_closure *closure:closure::default_displaced_step_hw_singlestep::0
689
237fc4c9
PA
690# Fix up the state resulting from successfully single-stepping a
691# displaced instruction, to give the result we would have gotten from
692# stepping the instruction in its original location.
693#
694# REGS is the register state resulting from single-stepping the
695# displaced instruction.
696#
697# CLOSURE is the result from the matching call to
698# gdbarch_displaced_step_copy_insn.
699#
700# If you provide gdbarch_displaced_step_copy_insn.but not this
701# function, then GDB assumes that no fixup is needed after
702# single-stepping the instruction.
703#
704# For a general explanation of displaced stepping and how GDB uses it,
705# see the comments in infrun.c.
706M:void:displaced_step_fixup:struct displaced_step_closure *closure, CORE_ADDR from, CORE_ADDR to, struct regcache *regs:closure, from, to, regs::NULL
707
708# Free a closure returned by gdbarch_displaced_step_copy_insn.
709#
710# If you provide gdbarch_displaced_step_copy_insn, you must provide
711# this function as well.
712#
713# If your architecture uses closures that don't need to be freed, then
714# you can use simple_displaced_step_free_closure here.
715#
716# For a general explanation of displaced stepping and how GDB uses it,
717# see the comments in infrun.c.
718m:void:displaced_step_free_closure:struct displaced_step_closure *closure:closure::NULL::(! gdbarch->displaced_step_free_closure) != (! gdbarch->displaced_step_copy_insn)
719
720# Return the address of an appropriate place to put displaced
721# instructions while we step over them. There need only be one such
722# place, since we're only stepping one thread over a breakpoint at a
723# time.
724#
725# For a general explanation of displaced stepping and how GDB uses it,
726# see the comments in infrun.c.
727m:CORE_ADDR:displaced_step_location:void:::NULL::(! gdbarch->displaced_step_location) != (! gdbarch->displaced_step_copy_insn)
728
dde08ee1
PA
729# Relocate an instruction to execute at a different address. OLDLOC
730# is the address in the inferior memory where the instruction to
731# relocate is currently at. On input, TO points to the destination
732# where we want the instruction to be copied (and possibly adjusted)
733# to. On output, it points to one past the end of the resulting
734# instruction(s). The effect of executing the instruction at TO shall
735# be the same as if executing it at FROM. For example, call
736# instructions that implicitly push the return address on the stack
737# should be adjusted to return to the instruction after OLDLOC;
738# relative branches, and other PC-relative instructions need the
739# offset adjusted; etc.
740M:void:relocate_instruction:CORE_ADDR *to, CORE_ADDR from:to, from::NULL
741
1c772458 742# Refresh overlay mapped state for section OSECT.
97030eea 743F:void:overlay_update:struct obj_section *osect:osect
4eb0ad19 744
97030eea 745M:const struct target_desc *:core_read_description:struct target_ops *target, bfd *abfd:target, abfd
149ad273
UW
746
747# Handle special encoding of static variables in stabs debug info.
97030eea 748F:char *:static_transform_name:char *name:name
203c3895 749# Set if the address in N_SO or N_FUN stabs may be zero.
97030eea 750v:int:sofun_address_maybe_missing:::0:0::0
1cded358 751
0508c3ec
HZ
752# Parse the instruction at ADDR storing in the record execution log
753# the registers REGCACHE and memory ranges that will be affected when
754# the instruction executes, along with their current values.
755# Return -1 if something goes wrong, 0 otherwise.
756M:int:process_record:struct regcache *regcache, CORE_ADDR addr:regcache, addr
757
3846b520
HZ
758# Save process state after a signal.
759# Return -1 if something goes wrong, 0 otherwise.
760M:int:process_record_signal:struct regcache *regcache, enum target_signal signal:regcache, signal
761
1cded358
AR
762# Signal translation: translate inferior's signal (host's) number into
763# GDB's representation.
764m:enum target_signal:target_signal_from_host:int signo:signo::default_target_signal_from_host::0
765# Signal translation: translate GDB's signal number into inferior's host
766# signal number.
767m:int:target_signal_to_host:enum target_signal ts:ts::default_target_signal_to_host::0
60c5725c 768
4aa995e1
PA
769# Extra signal info inspection.
770#
771# Return a type suitable to inspect extra signal information.
772M:struct type *:get_siginfo_type:void:
773
60c5725c
DJ
774# Record architecture-specific information from the symbol table.
775M:void:record_special_symbol:struct objfile *objfile, asymbol *sym:objfile, sym
50c71eaf 776
a96d9b2e
SDJ
777# Function for the 'catch syscall' feature.
778
779# Get architecture-specific system calls information from registers.
780M:LONGEST:get_syscall_number:ptid_t ptid:ptid
781
50c71eaf
PA
782# True if the list of shared libraries is one and only for all
783# processes, as opposed to a list of shared libraries per inferior.
2567c7d9
PA
784# This usually means that all processes, although may or may not share
785# an address space, will see the same set of symbols at the same
786# addresses.
50c71eaf 787v:int:has_global_solist:::0:0::0
2567c7d9
PA
788
789# On some targets, even though each inferior has its own private
790# address space, the debug interface takes care of making breakpoints
791# visible to all address spaces automatically. For such cases,
792# this property should be set to true.
793v:int:has_global_breakpoints:::0:0::0
6c95b8df
PA
794
795# True if inferiors share an address space (e.g., uClinux).
796m:int:has_shared_address_space:void:::default_has_shared_address_space::0
7a697b8d
SS
797
798# True if a fast tracepoint can be set at an address.
799m:int:fast_tracepoint_valid_at:CORE_ADDR addr, int *isize, char **msg:addr, isize, msg::default_fast_tracepoint_valid_at::0
75cebea9 800
f870a310
TT
801# Return the "auto" target charset.
802f:const char *:auto_charset:void::default_auto_charset:default_auto_charset::0
803# Return the "auto" target wide charset.
804f:const char *:auto_wide_charset:void::default_auto_wide_charset:default_auto_wide_charset::0
08105857
PA
805
806# If non-empty, this is a file extension that will be opened in place
807# of the file extension reported by the shared library list.
808#
809# This is most useful for toolchains that use a post-linker tool,
810# where the names of the files run on the target differ in extension
811# compared to the names of the files GDB should load for debug info.
812v:const char *:solib_symbols_extension:::::::pstring (gdbarch->solib_symbols_extension)
ab38a727
PA
813
814# If true, the target OS has DOS-based file system semantics. That
815# is, absolute paths include a drive name, and the backslash is
816# considered a directory separator.
817v:int:has_dos_based_file_system:::0:0::0
104c1213 818EOF
104c1213
JM
819}
820
0b8f9e4d
AC
821#
822# The .log file
823#
824exec > new-gdbarch.log
34620563 825function_list | while do_read
0b8f9e4d
AC
826do
827 cat <<EOF
2f9b146e 828${class} ${returntype} ${function} ($formal)
104c1213 829EOF
3d9a5942
AC
830 for r in ${read}
831 do
832 eval echo \"\ \ \ \ ${r}=\${${r}}\"
833 done
f0d4cc9e 834 if class_is_predicate_p && fallback_default_p
0b8f9e4d 835 then
66d659b1 836 echo "Error: predicate function ${function} can not have a non- multi-arch default" 1>&2
0b8f9e4d
AC
837 kill $$
838 exit 1
839 fi
72e74a21 840 if [ "x${invalid_p}" = "x0" -a -n "${postdefault}" ]
f0d4cc9e
AC
841 then
842 echo "Error: postdefault is useless when invalid_p=0" 1>&2
843 kill $$
844 exit 1
845 fi
a72293e2
AC
846 if class_is_multiarch_p
847 then
848 if class_is_predicate_p ; then :
849 elif test "x${predefault}" = "x"
850 then
2f9b146e 851 echo "Error: pure multi-arch function ${function} must have a predefault" 1>&2
a72293e2
AC
852 kill $$
853 exit 1
854 fi
855 fi
3d9a5942 856 echo ""
0b8f9e4d
AC
857done
858
859exec 1>&2
860compare_new gdbarch.log
861
104c1213
JM
862
863copyright ()
864{
865cat <<EOF
59233f88
AC
866/* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
867
104c1213 868/* Dynamic architecture support for GDB, the GNU debugger.
79d45cd4 869
f801e1e0
MS
870 Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
871 2007, 2008, 2009 Free Software Foundation, Inc.
104c1213
JM
872
873 This file is part of GDB.
874
875 This program is free software; you can redistribute it and/or modify
876 it under the terms of the GNU General Public License as published by
50efebf8 877 the Free Software Foundation; either version 3 of the License, or
104c1213 878 (at your option) any later version.
50efebf8 879
104c1213
JM
880 This program is distributed in the hope that it will be useful,
881 but WITHOUT ANY WARRANTY; without even the implied warranty of
882 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
883 GNU General Public License for more details.
50efebf8 884
104c1213 885 You should have received a copy of the GNU General Public License
50efebf8 886 along with this program. If not, see <http://www.gnu.org/licenses/>. */
104c1213 887
104c1213
JM
888/* This file was created with the aid of \`\`gdbarch.sh''.
889
52204a0b 890 The Bourne shell script \`\`gdbarch.sh'' creates the files
104c1213
JM
891 \`\`new-gdbarch.c'' and \`\`new-gdbarch.h and then compares them
892 against the existing \`\`gdbarch.[hc]''. Any differences found
893 being reported.
894
895 If editing this file, please also run gdbarch.sh and merge any
52204a0b 896 changes into that script. Conversely, when making sweeping changes
104c1213 897 to this file, modifying gdbarch.sh and using its output may prove
0963b4bd 898 easier. */
104c1213
JM
899
900EOF
901}
902
903#
904# The .h file
905#
906
907exec > new-gdbarch.h
908copyright
909cat <<EOF
910#ifndef GDBARCH_H
911#define GDBARCH_H
912
da3331ec
AC
913struct floatformat;
914struct ui_file;
104c1213
JM
915struct frame_info;
916struct value;
b6af0555 917struct objfile;
1c772458 918struct obj_section;
a2cf933a 919struct minimal_symbol;
049ee0e4 920struct regcache;
b59ff9d5 921struct reggroup;
6ce6d90f 922struct regset;
a89aa300 923struct disassemble_info;
e2d0e7eb 924struct target_ops;
030f20e1 925struct obstack;
8181d85f 926struct bp_target_info;
424163ea 927struct target_desc;
237fc4c9 928struct displaced_step_closure;
17ea7499 929struct core_regset_section;
a96d9b2e 930struct syscall;
175ff332 931struct agent_expr;
104c1213 932
9e2ace22
JB
933/* The architecture associated with the connection to the target.
934
935 The architecture vector provides some information that is really
936 a property of the target: The layout of certain packets, for instance;
937 or the solib_ops vector. Etc. To differentiate architecture accesses
938 to per-target properties from per-thread/per-frame/per-objfile properties,
939 accesses to per-target properties should be made through target_gdbarch.
940
941 Eventually, when support for multiple targets is implemented in
942 GDB, this global should be made target-specific. */
1cf3db46 943extern struct gdbarch *target_gdbarch;
104c1213
JM
944EOF
945
946# function typedef's
3d9a5942
AC
947printf "\n"
948printf "\n"
0963b4bd 949printf "/* The following are pre-initialized by GDBARCH. */\n"
34620563 950function_list | while do_read
104c1213 951do
2ada493a
AC
952 if class_is_info_p
953 then
3d9a5942
AC
954 printf "\n"
955 printf "extern ${returntype} gdbarch_${function} (struct gdbarch *gdbarch);\n"
0963b4bd 956 printf "/* set_gdbarch_${function}() - not applicable - pre-initialized. */\n"
2ada493a 957 fi
104c1213
JM
958done
959
960# function typedef's
3d9a5942
AC
961printf "\n"
962printf "\n"
0963b4bd 963printf "/* The following are initialized by the target dependent code. */\n"
34620563 964function_list | while do_read
104c1213 965do
72e74a21 966 if [ -n "${comment}" ]
34620563
AC
967 then
968 echo "${comment}" | sed \
969 -e '2 s,#,/*,' \
970 -e '3,$ s,#, ,' \
971 -e '$ s,$, */,'
972 fi
412d5987
AC
973
974 if class_is_predicate_p
2ada493a 975 then
412d5987
AC
976 printf "\n"
977 printf "extern int gdbarch_${function}_p (struct gdbarch *gdbarch);\n"
4a5c6a1d 978 fi
2ada493a
AC
979 if class_is_variable_p
980 then
3d9a5942
AC
981 printf "\n"
982 printf "extern ${returntype} gdbarch_${function} (struct gdbarch *gdbarch);\n"
983 printf "extern void set_gdbarch_${function} (struct gdbarch *gdbarch, ${returntype} ${function});\n"
2ada493a
AC
984 fi
985 if class_is_function_p
986 then
3d9a5942 987 printf "\n"
72e74a21 988 if [ "x${formal}" = "xvoid" ] && class_is_multiarch_p
4a5c6a1d
AC
989 then
990 printf "typedef ${returntype} (gdbarch_${function}_ftype) (struct gdbarch *gdbarch);\n"
991 elif class_is_multiarch_p
992 then
993 printf "typedef ${returntype} (gdbarch_${function}_ftype) (struct gdbarch *gdbarch, ${formal});\n"
994 else
995 printf "typedef ${returntype} (gdbarch_${function}_ftype) (${formal});\n"
996 fi
72e74a21 997 if [ "x${formal}" = "xvoid" ]
104c1213 998 then
3d9a5942 999 printf "extern ${returntype} gdbarch_${function} (struct gdbarch *gdbarch);\n"
104c1213 1000 else
3d9a5942 1001 printf "extern ${returntype} gdbarch_${function} (struct gdbarch *gdbarch, ${formal});\n"
104c1213 1002 fi
3d9a5942 1003 printf "extern void set_gdbarch_${function} (struct gdbarch *gdbarch, gdbarch_${function}_ftype *${function});\n"
2ada493a 1004 fi
104c1213
JM
1005done
1006
1007# close it off
1008cat <<EOF
1009
a96d9b2e
SDJ
1010/* Definition for an unknown syscall, used basically in error-cases. */
1011#define UNKNOWN_SYSCALL (-1)
1012
104c1213
JM
1013extern struct gdbarch_tdep *gdbarch_tdep (struct gdbarch *gdbarch);
1014
1015
1016/* Mechanism for co-ordinating the selection of a specific
1017 architecture.
1018
1019 GDB targets (*-tdep.c) can register an interest in a specific
1020 architecture. Other GDB components can register a need to maintain
1021 per-architecture data.
1022
1023 The mechanisms below ensures that there is only a loose connection
1024 between the set-architecture command and the various GDB
0fa6923a 1025 components. Each component can independently register their need
104c1213
JM
1026 to maintain architecture specific data with gdbarch.
1027
1028 Pragmatics:
1029
1030 Previously, a single TARGET_ARCHITECTURE_HOOK was provided. It
1031 didn't scale.
1032
1033 The more traditional mega-struct containing architecture specific
1034 data for all the various GDB components was also considered. Since
0fa6923a 1035 GDB is built from a variable number of (fairly independent)
104c1213 1036 components it was determined that the global aproach was not
0963b4bd 1037 applicable. */
104c1213
JM
1038
1039
1040/* Register a new architectural family with GDB.
1041
1042 Register support for the specified ARCHITECTURE with GDB. When
1043 gdbarch determines that the specified architecture has been
1044 selected, the corresponding INIT function is called.
1045
1046 --
1047
1048 The INIT function takes two parameters: INFO which contains the
1049 information available to gdbarch about the (possibly new)
1050 architecture; ARCHES which is a list of the previously created
1051 \`\`struct gdbarch'' for this architecture.
1052
0f79675b 1053 The INFO parameter is, as far as possible, be pre-initialized with
7a107747 1054 information obtained from INFO.ABFD or the global defaults.
0f79675b
AC
1055
1056 The ARCHES parameter is a linked list (sorted most recently used)
1057 of all the previously created architures for this architecture
1058 family. The (possibly NULL) ARCHES->gdbarch can used to access
1059 values from the previously selected architecture for this
59837fe0 1060 architecture family.
104c1213
JM
1061
1062 The INIT function shall return any of: NULL - indicating that it
ec3d358c 1063 doesn't recognize the selected architecture; an existing \`\`struct
104c1213
JM
1064 gdbarch'' from the ARCHES list - indicating that the new
1065 architecture is just a synonym for an earlier architecture (see
1066 gdbarch_list_lookup_by_info()); a newly created \`\`struct gdbarch''
4b9b3959
AC
1067 - that describes the selected architecture (see gdbarch_alloc()).
1068
1069 The DUMP_TDEP function shall print out all target specific values.
1070 Care should be taken to ensure that the function works in both the
0963b4bd 1071 multi-arch and non- multi-arch cases. */
104c1213
JM
1072
1073struct gdbarch_list
1074{
1075 struct gdbarch *gdbarch;
1076 struct gdbarch_list *next;
1077};
1078
1079struct gdbarch_info
1080{
0963b4bd 1081 /* Use default: NULL (ZERO). */
104c1213
JM
1082 const struct bfd_arch_info *bfd_arch_info;
1083
428721aa 1084 /* Use default: BFD_ENDIAN_UNKNOWN (NB: is not ZERO). */
104c1213
JM
1085 int byte_order;
1086
9d4fde75
SS
1087 int byte_order_for_code;
1088
0963b4bd 1089 /* Use default: NULL (ZERO). */
104c1213
JM
1090 bfd *abfd;
1091
0963b4bd 1092 /* Use default: NULL (ZERO). */
104c1213 1093 struct gdbarch_tdep_info *tdep_info;
4be87837
DJ
1094
1095 /* Use default: GDB_OSABI_UNINITIALIZED (-1). */
1096 enum gdb_osabi osabi;
424163ea
DJ
1097
1098 /* Use default: NULL (ZERO). */
1099 const struct target_desc *target_desc;
104c1213
JM
1100};
1101
1102typedef struct gdbarch *(gdbarch_init_ftype) (struct gdbarch_info info, struct gdbarch_list *arches);
4b9b3959 1103typedef void (gdbarch_dump_tdep_ftype) (struct gdbarch *gdbarch, struct ui_file *file);
104c1213 1104
4b9b3959 1105/* DEPRECATED - use gdbarch_register() */
104c1213
JM
1106extern void register_gdbarch_init (enum bfd_architecture architecture, gdbarch_init_ftype *);
1107
4b9b3959
AC
1108extern void gdbarch_register (enum bfd_architecture architecture,
1109 gdbarch_init_ftype *,
1110 gdbarch_dump_tdep_ftype *);
1111
104c1213 1112
b4a20239
AC
1113/* Return a freshly allocated, NULL terminated, array of the valid
1114 architecture names. Since architectures are registered during the
1115 _initialize phase this function only returns useful information
0963b4bd 1116 once initialization has been completed. */
b4a20239
AC
1117
1118extern const char **gdbarch_printable_names (void);
1119
1120
104c1213 1121/* Helper function. Search the list of ARCHES for a GDBARCH that
0963b4bd 1122 matches the information provided by INFO. */
104c1213 1123
424163ea 1124extern struct gdbarch_list *gdbarch_list_lookup_by_info (struct gdbarch_list *arches, const struct gdbarch_info *info);
104c1213
JM
1125
1126
1127/* Helper function. Create a preliminary \`\`struct gdbarch''. Perform
424163ea 1128 basic initialization using values obtained from the INFO and TDEP
104c1213 1129 parameters. set_gdbarch_*() functions are called to complete the
0963b4bd 1130 initialization of the object. */
104c1213
JM
1131
1132extern struct gdbarch *gdbarch_alloc (const struct gdbarch_info *info, struct gdbarch_tdep *tdep);
1133
1134
4b9b3959
AC
1135/* Helper function. Free a partially-constructed \`\`struct gdbarch''.
1136 It is assumed that the caller freeds the \`\`struct
0963b4bd 1137 gdbarch_tdep''. */
4b9b3959 1138
058f20d5
JB
1139extern void gdbarch_free (struct gdbarch *);
1140
1141
aebd7893
AC
1142/* Helper function. Allocate memory from the \`\`struct gdbarch''
1143 obstack. The memory is freed when the corresponding architecture
1144 is also freed. */
1145
1146extern void *gdbarch_obstack_zalloc (struct gdbarch *gdbarch, long size);
1147#define GDBARCH_OBSTACK_CALLOC(GDBARCH, NR, TYPE) ((TYPE *) gdbarch_obstack_zalloc ((GDBARCH), (NR) * sizeof (TYPE)))
1148#define GDBARCH_OBSTACK_ZALLOC(GDBARCH, TYPE) ((TYPE *) gdbarch_obstack_zalloc ((GDBARCH), sizeof (TYPE)))
1149
1150
0963b4bd 1151/* Helper function. Force an update of the current architecture.
104c1213 1152
b732d07d
AC
1153 The actual architecture selected is determined by INFO, \`\`(gdb) set
1154 architecture'' et.al., the existing architecture and BFD's default
1155 architecture. INFO should be initialized to zero and then selected
1156 fields should be updated.
104c1213 1157
0963b4bd 1158 Returns non-zero if the update succeeds. */
16f33e29
AC
1159
1160extern int gdbarch_update_p (struct gdbarch_info info);
104c1213
JM
1161
1162
ebdba546
AC
1163/* Helper function. Find an architecture matching info.
1164
1165 INFO should be initialized using gdbarch_info_init, relevant fields
1166 set, and then finished using gdbarch_info_fill.
1167
1168 Returns the corresponding architecture, or NULL if no matching
59837fe0 1169 architecture was found. */
ebdba546
AC
1170
1171extern struct gdbarch *gdbarch_find_by_info (struct gdbarch_info info);
1172
1173
59837fe0 1174/* Helper function. Set the global "target_gdbarch" to "gdbarch".
ebdba546
AC
1175
1176 FIXME: kettenis/20031124: Of the functions that follow, only
1177 gdbarch_from_bfd is supposed to survive. The others will
1178 dissappear since in the future GDB will (hopefully) be truly
1179 multi-arch. However, for now we're still stuck with the concept of
1180 a single active architecture. */
1181
59837fe0 1182extern void deprecated_target_gdbarch_select_hack (struct gdbarch *gdbarch);
ebdba546 1183
104c1213
JM
1184
1185/* Register per-architecture data-pointer.
1186
1187 Reserve space for a per-architecture data-pointer. An identifier
1188 for the reserved data-pointer is returned. That identifer should
95160752 1189 be saved in a local static variable.
104c1213 1190
fcc1c85c
AC
1191 Memory for the per-architecture data shall be allocated using
1192 gdbarch_obstack_zalloc. That memory will be deleted when the
1193 corresponding architecture object is deleted.
104c1213 1194
95160752
AC
1195 When a previously created architecture is re-selected, the
1196 per-architecture data-pointer for that previous architecture is
76860b5f 1197 restored. INIT() is not re-called.
104c1213
JM
1198
1199 Multiple registrarants for any architecture are allowed (and
1200 strongly encouraged). */
1201
95160752 1202struct gdbarch_data;
104c1213 1203
030f20e1
AC
1204typedef void *(gdbarch_data_pre_init_ftype) (struct obstack *obstack);
1205extern struct gdbarch_data *gdbarch_data_register_pre_init (gdbarch_data_pre_init_ftype *init);
1206typedef void *(gdbarch_data_post_init_ftype) (struct gdbarch *gdbarch);
1207extern struct gdbarch_data *gdbarch_data_register_post_init (gdbarch_data_post_init_ftype *init);
1208extern void deprecated_set_gdbarch_data (struct gdbarch *gdbarch,
1209 struct gdbarch_data *data,
1210 void *pointer);
104c1213 1211
451fbdda 1212extern void *gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *);
104c1213
JM
1213
1214
0fa6923a 1215/* Set the dynamic target-system-dependent parameters (architecture,
0963b4bd 1216 byte-order, ...) using information found in the BFD. */
104c1213
JM
1217
1218extern void set_gdbarch_from_file (bfd *);
1219
1220
e514a9d6
JM
1221/* Initialize the current architecture to the "first" one we find on
1222 our list. */
1223
1224extern void initialize_current_architecture (void);
1225
104c1213
JM
1226/* gdbarch trace variable */
1227extern int gdbarch_debug;
1228
4b9b3959 1229extern void gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file);
104c1213
JM
1230
1231#endif
1232EOF
1233exec 1>&2
1234#../move-if-change new-gdbarch.h gdbarch.h
59233f88 1235compare_new gdbarch.h
104c1213
JM
1236
1237
1238#
1239# C file
1240#
1241
1242exec > new-gdbarch.c
1243copyright
1244cat <<EOF
1245
1246#include "defs.h"
7355ddba 1247#include "arch-utils.h"
104c1213 1248
104c1213 1249#include "gdbcmd.h"
faaf634c 1250#include "inferior.h"
104c1213
JM
1251#include "symcat.h"
1252
f0d4cc9e 1253#include "floatformat.h"
104c1213 1254
95160752 1255#include "gdb_assert.h"
b66d6d2e 1256#include "gdb_string.h"
b59ff9d5 1257#include "reggroups.h"
4be87837 1258#include "osabi.h"
aebd7893 1259#include "gdb_obstack.h"
383f836e 1260#include "observer.h"
a3ecef73 1261#include "regcache.h"
95160752 1262
104c1213
JM
1263/* Static function declarations */
1264
b3cc3077 1265static void alloc_gdbarch_data (struct gdbarch *);
104c1213 1266
104c1213
JM
1267/* Non-zero if we want to trace architecture code. */
1268
1269#ifndef GDBARCH_DEBUG
1270#define GDBARCH_DEBUG 0
1271#endif
1272int gdbarch_debug = GDBARCH_DEBUG;
920d2a44
AC
1273static void
1274show_gdbarch_debug (struct ui_file *file, int from_tty,
1275 struct cmd_list_element *c, const char *value)
1276{
1277 fprintf_filtered (file, _("Architecture debugging is %s.\\n"), value);
1278}
104c1213 1279
456fcf94 1280static const char *
8da61cc4 1281pformat (const struct floatformat **format)
456fcf94
AC
1282{
1283 if (format == NULL)
1284 return "(null)";
1285 else
8da61cc4
DJ
1286 /* Just print out one of them - this is only for diagnostics. */
1287 return format[0]->name;
456fcf94
AC
1288}
1289
08105857
PA
1290static const char *
1291pstring (const char *string)
1292{
1293 if (string == NULL)
1294 return "(null)";
1295 return string;
1296}
1297
104c1213
JM
1298EOF
1299
1300# gdbarch open the gdbarch object
3d9a5942 1301printf "\n"
0963b4bd 1302printf "/* Maintain the struct gdbarch object. */\n"
3d9a5942
AC
1303printf "\n"
1304printf "struct gdbarch\n"
1305printf "{\n"
76860b5f
AC
1306printf " /* Has this architecture been fully initialized? */\n"
1307printf " int initialized_p;\n"
aebd7893
AC
1308printf "\n"
1309printf " /* An obstack bound to the lifetime of the architecture. */\n"
1310printf " struct obstack *obstack;\n"
1311printf "\n"
0963b4bd 1312printf " /* basic architectural information. */\n"
34620563 1313function_list | while do_read
104c1213 1314do
2ada493a
AC
1315 if class_is_info_p
1316 then
3d9a5942 1317 printf " ${returntype} ${function};\n"
2ada493a 1318 fi
104c1213 1319done
3d9a5942 1320printf "\n"
0963b4bd 1321printf " /* target specific vector. */\n"
3d9a5942
AC
1322printf " struct gdbarch_tdep *tdep;\n"
1323printf " gdbarch_dump_tdep_ftype *dump_tdep;\n"
1324printf "\n"
0963b4bd 1325printf " /* per-architecture data-pointers. */\n"
95160752 1326printf " unsigned nr_data;\n"
3d9a5942
AC
1327printf " void **data;\n"
1328printf "\n"
0963b4bd 1329printf " /* per-architecture swap-regions. */\n"
3d9a5942
AC
1330printf " struct gdbarch_swap *swap;\n"
1331printf "\n"
104c1213
JM
1332cat <<EOF
1333 /* Multi-arch values.
1334
1335 When extending this structure you must:
1336
1337 Add the field below.
1338
1339 Declare set/get functions and define the corresponding
1340 macro in gdbarch.h.
1341
1342 gdbarch_alloc(): If zero/NULL is not a suitable default,
1343 initialize the new field.
1344
1345 verify_gdbarch(): Confirm that the target updated the field
1346 correctly.
1347
7e73cedf 1348 gdbarch_dump(): Add a fprintf_unfiltered call so that the new
104c1213
JM
1349 field is dumped out
1350
c0e8c252 1351 \`\`startup_gdbarch()'': Append an initial value to the static
104c1213
JM
1352 variable (base values on the host's c-type system).
1353
1354 get_gdbarch(): Implement the set/get functions (probably using
1355 the macro's as shortcuts).
1356
1357 */
1358
1359EOF
34620563 1360function_list | while do_read
104c1213 1361do
2ada493a
AC
1362 if class_is_variable_p
1363 then
3d9a5942 1364 printf " ${returntype} ${function};\n"
2ada493a
AC
1365 elif class_is_function_p
1366 then
2f9b146e 1367 printf " gdbarch_${function}_ftype *${function};\n"
2ada493a 1368 fi
104c1213 1369done
3d9a5942 1370printf "};\n"
104c1213
JM
1371
1372# A pre-initialized vector
3d9a5942
AC
1373printf "\n"
1374printf "\n"
104c1213
JM
1375cat <<EOF
1376/* The default architecture uses host values (for want of a better
0963b4bd 1377 choice). */
104c1213 1378EOF
3d9a5942
AC
1379printf "\n"
1380printf "extern const struct bfd_arch_info bfd_default_arch_struct;\n"
1381printf "\n"
1382printf "struct gdbarch startup_gdbarch =\n"
1383printf "{\n"
76860b5f 1384printf " 1, /* Always initialized. */\n"
aebd7893 1385printf " NULL, /* The obstack. */\n"
0963b4bd 1386printf " /* basic architecture information. */\n"
4b9b3959 1387function_list | while do_read
104c1213 1388do
2ada493a
AC
1389 if class_is_info_p
1390 then
ec5cbaec 1391 printf " ${staticdefault}, /* ${function} */\n"
2ada493a 1392 fi
104c1213
JM
1393done
1394cat <<EOF
0963b4bd 1395 /* target specific vector and its dump routine. */
4b9b3959 1396 NULL, NULL,
0963b4bd 1397 /*per-architecture data-pointers and swap regions. */
104c1213
JM
1398 0, NULL, NULL,
1399 /* Multi-arch values */
1400EOF
34620563 1401function_list | while do_read
104c1213 1402do
2ada493a
AC
1403 if class_is_function_p || class_is_variable_p
1404 then
ec5cbaec 1405 printf " ${staticdefault}, /* ${function} */\n"
2ada493a 1406 fi
104c1213
JM
1407done
1408cat <<EOF
c0e8c252 1409 /* startup_gdbarch() */
104c1213 1410};
4b9b3959 1411
1cf3db46 1412struct gdbarch *target_gdbarch = &startup_gdbarch;
104c1213
JM
1413EOF
1414
1415# Create a new gdbarch struct
104c1213 1416cat <<EOF
7de2341d 1417
66b43ecb 1418/* Create a new \`\`struct gdbarch'' based on information provided by
0963b4bd 1419 \`\`struct gdbarch_info''. */
104c1213 1420EOF
3d9a5942 1421printf "\n"
104c1213
JM
1422cat <<EOF
1423struct gdbarch *
1424gdbarch_alloc (const struct gdbarch_info *info,
1425 struct gdbarch_tdep *tdep)
1426{
be7811ad 1427 struct gdbarch *gdbarch;
aebd7893
AC
1428
1429 /* Create an obstack for allocating all the per-architecture memory,
1430 then use that to allocate the architecture vector. */
1431 struct obstack *obstack = XMALLOC (struct obstack);
1432 obstack_init (obstack);
be7811ad
MD
1433 gdbarch = obstack_alloc (obstack, sizeof (*gdbarch));
1434 memset (gdbarch, 0, sizeof (*gdbarch));
1435 gdbarch->obstack = obstack;
85de9627 1436
be7811ad 1437 alloc_gdbarch_data (gdbarch);
85de9627 1438
be7811ad 1439 gdbarch->tdep = tdep;
104c1213 1440EOF
3d9a5942 1441printf "\n"
34620563 1442function_list | while do_read
104c1213 1443do
2ada493a
AC
1444 if class_is_info_p
1445 then
be7811ad 1446 printf " gdbarch->${function} = info->${function};\n"
2ada493a 1447 fi
104c1213 1448done
3d9a5942 1449printf "\n"
0963b4bd 1450printf " /* Force the explicit initialization of these. */\n"
34620563 1451function_list | while do_read
104c1213 1452do
2ada493a
AC
1453 if class_is_function_p || class_is_variable_p
1454 then
72e74a21 1455 if [ -n "${predefault}" -a "x${predefault}" != "x0" ]
104c1213 1456 then
be7811ad 1457 printf " gdbarch->${function} = ${predefault};\n"
104c1213 1458 fi
2ada493a 1459 fi
104c1213
JM
1460done
1461cat <<EOF
1462 /* gdbarch_alloc() */
1463
be7811ad 1464 return gdbarch;
104c1213
JM
1465}
1466EOF
1467
058f20d5 1468# Free a gdbarch struct.
3d9a5942
AC
1469printf "\n"
1470printf "\n"
058f20d5 1471cat <<EOF
aebd7893
AC
1472/* Allocate extra space using the per-architecture obstack. */
1473
1474void *
1475gdbarch_obstack_zalloc (struct gdbarch *arch, long size)
1476{
1477 void *data = obstack_alloc (arch->obstack, size);
05c547f6 1478
aebd7893
AC
1479 memset (data, 0, size);
1480 return data;
1481}
1482
1483
058f20d5
JB
1484/* Free a gdbarch struct. This should never happen in normal
1485 operation --- once you've created a gdbarch, you keep it around.
1486 However, if an architecture's init function encounters an error
1487 building the structure, it may need to clean up a partially
1488 constructed gdbarch. */
4b9b3959 1489
058f20d5
JB
1490void
1491gdbarch_free (struct gdbarch *arch)
1492{
aebd7893 1493 struct obstack *obstack;
05c547f6 1494
95160752 1495 gdb_assert (arch != NULL);
aebd7893
AC
1496 gdb_assert (!arch->initialized_p);
1497 obstack = arch->obstack;
1498 obstack_free (obstack, 0); /* Includes the ARCH. */
1499 xfree (obstack);
058f20d5
JB
1500}
1501EOF
1502
104c1213 1503# verify a new architecture
104c1213 1504cat <<EOF
db446970
AC
1505
1506
1507/* Ensure that all values in a GDBARCH are reasonable. */
1508
104c1213 1509static void
be7811ad 1510verify_gdbarch (struct gdbarch *gdbarch)
104c1213 1511{
f16a1923
AC
1512 struct ui_file *log;
1513 struct cleanup *cleanups;
759ef836 1514 long length;
f16a1923 1515 char *buf;
05c547f6 1516
f16a1923
AC
1517 log = mem_fileopen ();
1518 cleanups = make_cleanup_ui_file_delete (log);
104c1213 1519 /* fundamental */
be7811ad 1520 if (gdbarch->byte_order == BFD_ENDIAN_UNKNOWN)
f16a1923 1521 fprintf_unfiltered (log, "\n\tbyte-order");
be7811ad 1522 if (gdbarch->bfd_arch_info == NULL)
f16a1923 1523 fprintf_unfiltered (log, "\n\tbfd_arch_info");
0963b4bd 1524 /* Check those that need to be defined for the given multi-arch level. */
104c1213 1525EOF
34620563 1526function_list | while do_read
104c1213 1527do
2ada493a
AC
1528 if class_is_function_p || class_is_variable_p
1529 then
72e74a21 1530 if [ "x${invalid_p}" = "x0" ]
c0e8c252 1531 then
3d9a5942 1532 printf " /* Skip verify of ${function}, invalid_p == 0 */\n"
2ada493a
AC
1533 elif class_is_predicate_p
1534 then
0963b4bd 1535 printf " /* Skip verify of ${function}, has predicate. */\n"
f0d4cc9e 1536 # FIXME: See do_read for potential simplification
72e74a21 1537 elif [ -n "${invalid_p}" -a -n "${postdefault}" ]
f0d4cc9e 1538 then
3d9a5942 1539 printf " if (${invalid_p})\n"
be7811ad 1540 printf " gdbarch->${function} = ${postdefault};\n"
72e74a21 1541 elif [ -n "${predefault}" -a -n "${postdefault}" ]
f0d4cc9e 1542 then
be7811ad
MD
1543 printf " if (gdbarch->${function} == ${predefault})\n"
1544 printf " gdbarch->${function} = ${postdefault};\n"
72e74a21 1545 elif [ -n "${postdefault}" ]
f0d4cc9e 1546 then
be7811ad
MD
1547 printf " if (gdbarch->${function} == 0)\n"
1548 printf " gdbarch->${function} = ${postdefault};\n"
72e74a21 1549 elif [ -n "${invalid_p}" ]
104c1213 1550 then
4d60522e 1551 printf " if (${invalid_p})\n"
f16a1923 1552 printf " fprintf_unfiltered (log, \"\\\\n\\\\t${function}\");\n"
72e74a21 1553 elif [ -n "${predefault}" ]
104c1213 1554 then
be7811ad 1555 printf " if (gdbarch->${function} == ${predefault})\n"
f16a1923 1556 printf " fprintf_unfiltered (log, \"\\\\n\\\\t${function}\");\n"
104c1213 1557 fi
2ada493a 1558 fi
104c1213
JM
1559done
1560cat <<EOF
759ef836 1561 buf = ui_file_xstrdup (log, &length);
f16a1923 1562 make_cleanup (xfree, buf);
759ef836 1563 if (length > 0)
f16a1923 1564 internal_error (__FILE__, __LINE__,
85c07804 1565 _("verify_gdbarch: the following are invalid ...%s"),
f16a1923
AC
1566 buf);
1567 do_cleanups (cleanups);
104c1213
JM
1568}
1569EOF
1570
1571# dump the structure
3d9a5942
AC
1572printf "\n"
1573printf "\n"
104c1213 1574cat <<EOF
0963b4bd 1575/* Print out the details of the current architecture. */
4b9b3959 1576
104c1213 1577void
be7811ad 1578gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
104c1213 1579{
b78960be 1580 const char *gdb_nm_file = "<not-defined>";
05c547f6 1581
b78960be
AC
1582#if defined (GDB_NM_FILE)
1583 gdb_nm_file = GDB_NM_FILE;
1584#endif
1585 fprintf_unfiltered (file,
1586 "gdbarch_dump: GDB_NM_FILE = %s\\n",
1587 gdb_nm_file);
104c1213 1588EOF
97030eea 1589function_list | sort -t: -k 3 | while do_read
104c1213 1590do
1e9f55d0
AC
1591 # First the predicate
1592 if class_is_predicate_p
1593 then
7996bcec 1594 printf " fprintf_unfiltered (file,\n"
48f7351b 1595 printf " \"gdbarch_dump: gdbarch_${function}_p() = %%d\\\\n\",\n"
be7811ad 1596 printf " gdbarch_${function}_p (gdbarch));\n"
08e45a40 1597 fi
48f7351b 1598 # Print the corresponding value.
283354d8 1599 if class_is_function_p
4b9b3959 1600 then
7996bcec 1601 printf " fprintf_unfiltered (file,\n"
30737ed9
JB
1602 printf " \"gdbarch_dump: ${function} = <%%s>\\\\n\",\n"
1603 printf " host_address_to_string (gdbarch->${function}));\n"
4b9b3959 1604 else
48f7351b 1605 # It is a variable
2f9b146e
AC
1606 case "${print}:${returntype}" in
1607 :CORE_ADDR )
0b1553bc
UW
1608 fmt="%s"
1609 print="core_addr_to_string_nz (gdbarch->${function})"
48f7351b 1610 ;;
2f9b146e 1611 :* )
48f7351b 1612 fmt="%s"
623d3eb1 1613 print="plongest (gdbarch->${function})"
48f7351b
AC
1614 ;;
1615 * )
2f9b146e 1616 fmt="%s"
48f7351b
AC
1617 ;;
1618 esac
3d9a5942 1619 printf " fprintf_unfiltered (file,\n"
48f7351b 1620 printf " \"gdbarch_dump: ${function} = %s\\\\n\",\n" "${fmt}"
3d9a5942 1621 printf " ${print});\n"
2ada493a 1622 fi
104c1213 1623done
381323f4 1624cat <<EOF
be7811ad
MD
1625 if (gdbarch->dump_tdep != NULL)
1626 gdbarch->dump_tdep (gdbarch, file);
381323f4
AC
1627}
1628EOF
104c1213
JM
1629
1630
1631# GET/SET
3d9a5942 1632printf "\n"
104c1213
JM
1633cat <<EOF
1634struct gdbarch_tdep *
1635gdbarch_tdep (struct gdbarch *gdbarch)
1636{
1637 if (gdbarch_debug >= 2)
3d9a5942 1638 fprintf_unfiltered (gdb_stdlog, "gdbarch_tdep called\\n");
104c1213
JM
1639 return gdbarch->tdep;
1640}
1641EOF
3d9a5942 1642printf "\n"
34620563 1643function_list | while do_read
104c1213 1644do
2ada493a
AC
1645 if class_is_predicate_p
1646 then
3d9a5942
AC
1647 printf "\n"
1648 printf "int\n"
1649 printf "gdbarch_${function}_p (struct gdbarch *gdbarch)\n"
1650 printf "{\n"
8de9bdc4 1651 printf " gdb_assert (gdbarch != NULL);\n"
f7968451 1652 printf " return ${predicate};\n"
3d9a5942 1653 printf "}\n"
2ada493a
AC
1654 fi
1655 if class_is_function_p
1656 then
3d9a5942
AC
1657 printf "\n"
1658 printf "${returntype}\n"
72e74a21 1659 if [ "x${formal}" = "xvoid" ]
104c1213 1660 then
3d9a5942 1661 printf "gdbarch_${function} (struct gdbarch *gdbarch)\n"
104c1213 1662 else
3d9a5942 1663 printf "gdbarch_${function} (struct gdbarch *gdbarch, ${formal})\n"
104c1213 1664 fi
3d9a5942 1665 printf "{\n"
8de9bdc4 1666 printf " gdb_assert (gdbarch != NULL);\n"
956ac328 1667 printf " gdb_assert (gdbarch->${function} != NULL);\n"
f7968451 1668 if class_is_predicate_p && test -n "${predefault}"
ae45cd16
AC
1669 then
1670 # Allow a call to a function with a predicate.
956ac328 1671 printf " /* Do not check predicate: ${predicate}, allow call. */\n"
ae45cd16 1672 fi
3d9a5942
AC
1673 printf " if (gdbarch_debug >= 2)\n"
1674 printf " fprintf_unfiltered (gdb_stdlog, \"gdbarch_${function} called\\\\n\");\n"
72e74a21 1675 if [ "x${actual}" = "x-" -o "x${actual}" = "x" ]
4a5c6a1d
AC
1676 then
1677 if class_is_multiarch_p
1678 then
1679 params="gdbarch"
1680 else
1681 params=""
1682 fi
1683 else
1684 if class_is_multiarch_p
1685 then
1686 params="gdbarch, ${actual}"
1687 else
1688 params="${actual}"
1689 fi
1690 fi
72e74a21 1691 if [ "x${returntype}" = "xvoid" ]
104c1213 1692 then
4a5c6a1d 1693 printf " gdbarch->${function} (${params});\n"
104c1213 1694 else
4a5c6a1d 1695 printf " return gdbarch->${function} (${params});\n"
104c1213 1696 fi
3d9a5942
AC
1697 printf "}\n"
1698 printf "\n"
1699 printf "void\n"
1700 printf "set_gdbarch_${function} (struct gdbarch *gdbarch,\n"
1701 printf " `echo ${function} | sed -e 's/./ /g'` gdbarch_${function}_ftype ${function})\n"
1702 printf "{\n"
1703 printf " gdbarch->${function} = ${function};\n"
1704 printf "}\n"
2ada493a
AC
1705 elif class_is_variable_p
1706 then
3d9a5942
AC
1707 printf "\n"
1708 printf "${returntype}\n"
1709 printf "gdbarch_${function} (struct gdbarch *gdbarch)\n"
1710 printf "{\n"
8de9bdc4 1711 printf " gdb_assert (gdbarch != NULL);\n"
72e74a21 1712 if [ "x${invalid_p}" = "x0" ]
c0e8c252 1713 then
3d9a5942 1714 printf " /* Skip verify of ${function}, invalid_p == 0 */\n"
72e74a21 1715 elif [ -n "${invalid_p}" ]
104c1213 1716 then
956ac328
AC
1717 printf " /* Check variable is valid. */\n"
1718 printf " gdb_assert (!(${invalid_p}));\n"
72e74a21 1719 elif [ -n "${predefault}" ]
104c1213 1720 then
956ac328
AC
1721 printf " /* Check variable changed from pre-default. */\n"
1722 printf " gdb_assert (gdbarch->${function} != ${predefault});\n"
104c1213 1723 fi
3d9a5942
AC
1724 printf " if (gdbarch_debug >= 2)\n"
1725 printf " fprintf_unfiltered (gdb_stdlog, \"gdbarch_${function} called\\\\n\");\n"
1726 printf " return gdbarch->${function};\n"
1727 printf "}\n"
1728 printf "\n"
1729 printf "void\n"
1730 printf "set_gdbarch_${function} (struct gdbarch *gdbarch,\n"
1731 printf " `echo ${function} | sed -e 's/./ /g'` ${returntype} ${function})\n"
1732 printf "{\n"
1733 printf " gdbarch->${function} = ${function};\n"
1734 printf "}\n"
2ada493a
AC
1735 elif class_is_info_p
1736 then
3d9a5942
AC
1737 printf "\n"
1738 printf "${returntype}\n"
1739 printf "gdbarch_${function} (struct gdbarch *gdbarch)\n"
1740 printf "{\n"
8de9bdc4 1741 printf " gdb_assert (gdbarch != NULL);\n"
3d9a5942
AC
1742 printf " if (gdbarch_debug >= 2)\n"
1743 printf " fprintf_unfiltered (gdb_stdlog, \"gdbarch_${function} called\\\\n\");\n"
1744 printf " return gdbarch->${function};\n"
1745 printf "}\n"
2ada493a 1746 fi
104c1213
JM
1747done
1748
1749# All the trailing guff
1750cat <<EOF
1751
1752
f44c642f 1753/* Keep a registry of per-architecture data-pointers required by GDB
0963b4bd 1754 modules. */
104c1213
JM
1755
1756struct gdbarch_data
1757{
95160752 1758 unsigned index;
76860b5f 1759 int init_p;
030f20e1
AC
1760 gdbarch_data_pre_init_ftype *pre_init;
1761 gdbarch_data_post_init_ftype *post_init;
104c1213
JM
1762};
1763
1764struct gdbarch_data_registration
1765{
104c1213
JM
1766 struct gdbarch_data *data;
1767 struct gdbarch_data_registration *next;
1768};
1769
f44c642f 1770struct gdbarch_data_registry
104c1213 1771{
95160752 1772 unsigned nr;
104c1213
JM
1773 struct gdbarch_data_registration *registrations;
1774};
1775
f44c642f 1776struct gdbarch_data_registry gdbarch_data_registry =
104c1213
JM
1777{
1778 0, NULL,
1779};
1780
030f20e1
AC
1781static struct gdbarch_data *
1782gdbarch_data_register (gdbarch_data_pre_init_ftype *pre_init,
1783 gdbarch_data_post_init_ftype *post_init)
104c1213
JM
1784{
1785 struct gdbarch_data_registration **curr;
05c547f6
MS
1786
1787 /* Append the new registration. */
f44c642f 1788 for (curr = &gdbarch_data_registry.registrations;
104c1213
JM
1789 (*curr) != NULL;
1790 curr = &(*curr)->next);
1791 (*curr) = XMALLOC (struct gdbarch_data_registration);
1792 (*curr)->next = NULL;
104c1213 1793 (*curr)->data = XMALLOC (struct gdbarch_data);
f44c642f 1794 (*curr)->data->index = gdbarch_data_registry.nr++;
030f20e1
AC
1795 (*curr)->data->pre_init = pre_init;
1796 (*curr)->data->post_init = post_init;
76860b5f 1797 (*curr)->data->init_p = 1;
104c1213
JM
1798 return (*curr)->data;
1799}
1800
030f20e1
AC
1801struct gdbarch_data *
1802gdbarch_data_register_pre_init (gdbarch_data_pre_init_ftype *pre_init)
1803{
1804 return gdbarch_data_register (pre_init, NULL);
1805}
1806
1807struct gdbarch_data *
1808gdbarch_data_register_post_init (gdbarch_data_post_init_ftype *post_init)
1809{
1810 return gdbarch_data_register (NULL, post_init);
1811}
104c1213 1812
0963b4bd 1813/* Create/delete the gdbarch data vector. */
95160752
AC
1814
1815static void
b3cc3077 1816alloc_gdbarch_data (struct gdbarch *gdbarch)
95160752 1817{
b3cc3077
JB
1818 gdb_assert (gdbarch->data == NULL);
1819 gdbarch->nr_data = gdbarch_data_registry.nr;
aebd7893 1820 gdbarch->data = GDBARCH_OBSTACK_CALLOC (gdbarch, gdbarch->nr_data, void *);
b3cc3077 1821}
3c875b6f 1822
76860b5f 1823/* Initialize the current value of the specified per-architecture
0963b4bd 1824 data-pointer. */
b3cc3077 1825
95160752 1826void
030f20e1
AC
1827deprecated_set_gdbarch_data (struct gdbarch *gdbarch,
1828 struct gdbarch_data *data,
1829 void *pointer)
95160752
AC
1830{
1831 gdb_assert (data->index < gdbarch->nr_data);
aebd7893 1832 gdb_assert (gdbarch->data[data->index] == NULL);
030f20e1 1833 gdb_assert (data->pre_init == NULL);
95160752
AC
1834 gdbarch->data[data->index] = pointer;
1835}
1836
104c1213 1837/* Return the current value of the specified per-architecture
0963b4bd 1838 data-pointer. */
104c1213
JM
1839
1840void *
451fbdda 1841gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *data)
104c1213 1842{
451fbdda 1843 gdb_assert (data->index < gdbarch->nr_data);
030f20e1 1844 if (gdbarch->data[data->index] == NULL)
76860b5f 1845 {
030f20e1
AC
1846 /* The data-pointer isn't initialized, call init() to get a
1847 value. */
1848 if (data->pre_init != NULL)
1849 /* Mid architecture creation: pass just the obstack, and not
1850 the entire architecture, as that way it isn't possible for
1851 pre-init code to refer to undefined architecture
1852 fields. */
1853 gdbarch->data[data->index] = data->pre_init (gdbarch->obstack);
1854 else if (gdbarch->initialized_p
1855 && data->post_init != NULL)
1856 /* Post architecture creation: pass the entire architecture
1857 (as all fields are valid), but be careful to also detect
1858 recursive references. */
1859 {
1860 gdb_assert (data->init_p);
1861 data->init_p = 0;
1862 gdbarch->data[data->index] = data->post_init (gdbarch);
1863 data->init_p = 1;
1864 }
1865 else
1866 /* The architecture initialization hasn't completed - punt -
1867 hope that the caller knows what they are doing. Once
1868 deprecated_set_gdbarch_data has been initialized, this can be
1869 changed to an internal error. */
1870 return NULL;
76860b5f
AC
1871 gdb_assert (gdbarch->data[data->index] != NULL);
1872 }
451fbdda 1873 return gdbarch->data[data->index];
104c1213
JM
1874}
1875
1876
0963b4bd 1877/* Keep a registry of the architectures known by GDB. */
104c1213 1878
4b9b3959 1879struct gdbarch_registration
104c1213
JM
1880{
1881 enum bfd_architecture bfd_architecture;
1882 gdbarch_init_ftype *init;
4b9b3959 1883 gdbarch_dump_tdep_ftype *dump_tdep;
104c1213 1884 struct gdbarch_list *arches;
4b9b3959 1885 struct gdbarch_registration *next;
104c1213
JM
1886};
1887
f44c642f 1888static struct gdbarch_registration *gdbarch_registry = NULL;
104c1213 1889
b4a20239
AC
1890static void
1891append_name (const char ***buf, int *nr, const char *name)
1892{
1893 *buf = xrealloc (*buf, sizeof (char**) * (*nr + 1));
1894 (*buf)[*nr] = name;
1895 *nr += 1;
1896}
1897
1898const char **
1899gdbarch_printable_names (void)
1900{
7996bcec 1901 /* Accumulate a list of names based on the registed list of
0963b4bd 1902 architectures. */
7996bcec
AC
1903 int nr_arches = 0;
1904 const char **arches = NULL;
1905 struct gdbarch_registration *rego;
05c547f6 1906
7996bcec
AC
1907 for (rego = gdbarch_registry;
1908 rego != NULL;
1909 rego = rego->next)
b4a20239 1910 {
7996bcec
AC
1911 const struct bfd_arch_info *ap;
1912 ap = bfd_lookup_arch (rego->bfd_architecture, 0);
1913 if (ap == NULL)
1914 internal_error (__FILE__, __LINE__,
85c07804 1915 _("gdbarch_architecture_names: multi-arch unknown"));
7996bcec
AC
1916 do
1917 {
1918 append_name (&arches, &nr_arches, ap->printable_name);
1919 ap = ap->next;
1920 }
1921 while (ap != NULL);
b4a20239 1922 }
7996bcec
AC
1923 append_name (&arches, &nr_arches, NULL);
1924 return arches;
b4a20239
AC
1925}
1926
1927
104c1213 1928void
4b9b3959
AC
1929gdbarch_register (enum bfd_architecture bfd_architecture,
1930 gdbarch_init_ftype *init,
1931 gdbarch_dump_tdep_ftype *dump_tdep)
104c1213 1932{
4b9b3959 1933 struct gdbarch_registration **curr;
104c1213 1934 const struct bfd_arch_info *bfd_arch_info;
05c547f6 1935
ec3d358c 1936 /* Check that BFD recognizes this architecture */
104c1213
JM
1937 bfd_arch_info = bfd_lookup_arch (bfd_architecture, 0);
1938 if (bfd_arch_info == NULL)
1939 {
8e65ff28 1940 internal_error (__FILE__, __LINE__,
0963b4bd
MS
1941 _("gdbarch: Attempt to register "
1942 "unknown architecture (%d)"),
8e65ff28 1943 bfd_architecture);
104c1213 1944 }
0963b4bd 1945 /* Check that we haven't seen this architecture before. */
f44c642f 1946 for (curr = &gdbarch_registry;
104c1213
JM
1947 (*curr) != NULL;
1948 curr = &(*curr)->next)
1949 {
1950 if (bfd_architecture == (*curr)->bfd_architecture)
8e65ff28 1951 internal_error (__FILE__, __LINE__,
0963b4bd
MS
1952 _("gdbarch: Duplicate registraration "
1953 "of architecture (%s)"),
8e65ff28 1954 bfd_arch_info->printable_name);
104c1213
JM
1955 }
1956 /* log it */
1957 if (gdbarch_debug)
30737ed9 1958 fprintf_unfiltered (gdb_stdlog, "register_gdbarch_init (%s, %s)\n",
104c1213 1959 bfd_arch_info->printable_name,
30737ed9 1960 host_address_to_string (init));
104c1213 1961 /* Append it */
4b9b3959 1962 (*curr) = XMALLOC (struct gdbarch_registration);
104c1213
JM
1963 (*curr)->bfd_architecture = bfd_architecture;
1964 (*curr)->init = init;
4b9b3959 1965 (*curr)->dump_tdep = dump_tdep;
104c1213
JM
1966 (*curr)->arches = NULL;
1967 (*curr)->next = NULL;
4b9b3959
AC
1968}
1969
1970void
1971register_gdbarch_init (enum bfd_architecture bfd_architecture,
1972 gdbarch_init_ftype *init)
1973{
1974 gdbarch_register (bfd_architecture, init, NULL);
104c1213 1975}
104c1213
JM
1976
1977
424163ea 1978/* Look for an architecture using gdbarch_info. */
104c1213
JM
1979
1980struct gdbarch_list *
1981gdbarch_list_lookup_by_info (struct gdbarch_list *arches,
1982 const struct gdbarch_info *info)
1983{
1984 for (; arches != NULL; arches = arches->next)
1985 {
1986 if (info->bfd_arch_info != arches->gdbarch->bfd_arch_info)
1987 continue;
1988 if (info->byte_order != arches->gdbarch->byte_order)
1989 continue;
4be87837
DJ
1990 if (info->osabi != arches->gdbarch->osabi)
1991 continue;
424163ea
DJ
1992 if (info->target_desc != arches->gdbarch->target_desc)
1993 continue;
104c1213
JM
1994 return arches;
1995 }
1996 return NULL;
1997}
1998
1999
ebdba546 2000/* Find an architecture that matches the specified INFO. Create a new
59837fe0 2001 architecture if needed. Return that new architecture. */
104c1213 2002
59837fe0
UW
2003struct gdbarch *
2004gdbarch_find_by_info (struct gdbarch_info info)
104c1213
JM
2005{
2006 struct gdbarch *new_gdbarch;
4b9b3959 2007 struct gdbarch_registration *rego;
104c1213 2008
b732d07d 2009 /* Fill in missing parts of the INFO struct using a number of
7a107747
DJ
2010 sources: "set ..."; INFOabfd supplied; and the global
2011 defaults. */
2012 gdbarch_info_fill (&info);
4be87837 2013
0963b4bd 2014 /* Must have found some sort of architecture. */
b732d07d 2015 gdb_assert (info.bfd_arch_info != NULL);
104c1213
JM
2016
2017 if (gdbarch_debug)
2018 {
2019 fprintf_unfiltered (gdb_stdlog,
59837fe0 2020 "gdbarch_find_by_info: info.bfd_arch_info %s\n",
104c1213
JM
2021 (info.bfd_arch_info != NULL
2022 ? info.bfd_arch_info->printable_name
2023 : "(null)"));
2024 fprintf_unfiltered (gdb_stdlog,
59837fe0 2025 "gdbarch_find_by_info: info.byte_order %d (%s)\n",
104c1213 2026 info.byte_order,
d7449b42 2027 (info.byte_order == BFD_ENDIAN_BIG ? "big"
778eb05e 2028 : info.byte_order == BFD_ENDIAN_LITTLE ? "little"
104c1213 2029 : "default"));
4be87837 2030 fprintf_unfiltered (gdb_stdlog,
59837fe0 2031 "gdbarch_find_by_info: info.osabi %d (%s)\n",
4be87837 2032 info.osabi, gdbarch_osabi_name (info.osabi));
104c1213 2033 fprintf_unfiltered (gdb_stdlog,
59837fe0 2034 "gdbarch_find_by_info: info.abfd %s\n",
30737ed9 2035 host_address_to_string (info.abfd));
104c1213 2036 fprintf_unfiltered (gdb_stdlog,
59837fe0 2037 "gdbarch_find_by_info: info.tdep_info %s\n",
30737ed9 2038 host_address_to_string (info.tdep_info));
104c1213
JM
2039 }
2040
ebdba546 2041 /* Find the tdep code that knows about this architecture. */
b732d07d
AC
2042 for (rego = gdbarch_registry;
2043 rego != NULL;
2044 rego = rego->next)
2045 if (rego->bfd_architecture == info.bfd_arch_info->arch)
2046 break;
2047 if (rego == NULL)
2048 {
2049 if (gdbarch_debug)
59837fe0 2050 fprintf_unfiltered (gdb_stdlog, "gdbarch_find_by_info: "
ebdba546 2051 "No matching architecture\n");
b732d07d
AC
2052 return 0;
2053 }
2054
ebdba546 2055 /* Ask the tdep code for an architecture that matches "info". */
104c1213
JM
2056 new_gdbarch = rego->init (info, rego->arches);
2057
ebdba546
AC
2058 /* Did the tdep code like it? No. Reject the change and revert to
2059 the old architecture. */
104c1213
JM
2060 if (new_gdbarch == NULL)
2061 {
2062 if (gdbarch_debug)
59837fe0 2063 fprintf_unfiltered (gdb_stdlog, "gdbarch_find_by_info: "
ebdba546
AC
2064 "Target rejected architecture\n");
2065 return NULL;
104c1213
JM
2066 }
2067
ebdba546
AC
2068 /* Is this a pre-existing architecture (as determined by already
2069 being initialized)? Move it to the front of the architecture
2070 list (keeping the list sorted Most Recently Used). */
2071 if (new_gdbarch->initialized_p)
104c1213 2072 {
ebdba546
AC
2073 struct gdbarch_list **list;
2074 struct gdbarch_list *this;
104c1213 2075 if (gdbarch_debug)
59837fe0 2076 fprintf_unfiltered (gdb_stdlog, "gdbarch_find_by_info: "
30737ed9
JB
2077 "Previous architecture %s (%s) selected\n",
2078 host_address_to_string (new_gdbarch),
104c1213 2079 new_gdbarch->bfd_arch_info->printable_name);
ebdba546
AC
2080 /* Find the existing arch in the list. */
2081 for (list = &rego->arches;
2082 (*list) != NULL && (*list)->gdbarch != new_gdbarch;
2083 list = &(*list)->next);
2084 /* It had better be in the list of architectures. */
2085 gdb_assert ((*list) != NULL && (*list)->gdbarch == new_gdbarch);
2086 /* Unlink THIS. */
2087 this = (*list);
2088 (*list) = this->next;
2089 /* Insert THIS at the front. */
2090 this->next = rego->arches;
2091 rego->arches = this;
2092 /* Return it. */
2093 return new_gdbarch;
104c1213
JM
2094 }
2095
ebdba546
AC
2096 /* It's a new architecture. */
2097 if (gdbarch_debug)
59837fe0 2098 fprintf_unfiltered (gdb_stdlog, "gdbarch_find_by_info: "
30737ed9
JB
2099 "New architecture %s (%s) selected\n",
2100 host_address_to_string (new_gdbarch),
ebdba546
AC
2101 new_gdbarch->bfd_arch_info->printable_name);
2102
2103 /* Insert the new architecture into the front of the architecture
2104 list (keep the list sorted Most Recently Used). */
0f79675b
AC
2105 {
2106 struct gdbarch_list *this = XMALLOC (struct gdbarch_list);
2107 this->next = rego->arches;
2108 this->gdbarch = new_gdbarch;
2109 rego->arches = this;
2110 }
104c1213 2111
4b9b3959
AC
2112 /* Check that the newly installed architecture is valid. Plug in
2113 any post init values. */
2114 new_gdbarch->dump_tdep = rego->dump_tdep;
104c1213 2115 verify_gdbarch (new_gdbarch);
ebdba546 2116 new_gdbarch->initialized_p = 1;
104c1213 2117
4b9b3959 2118 if (gdbarch_debug)
ebdba546
AC
2119 gdbarch_dump (new_gdbarch, gdb_stdlog);
2120
2121 return new_gdbarch;
2122}
2123
e487cc15 2124/* Make the specified architecture current. */
ebdba546
AC
2125
2126void
59837fe0 2127deprecated_target_gdbarch_select_hack (struct gdbarch *new_gdbarch)
ebdba546
AC
2128{
2129 gdb_assert (new_gdbarch != NULL);
ebdba546 2130 gdb_assert (new_gdbarch->initialized_p);
1cf3db46 2131 target_gdbarch = new_gdbarch;
383f836e 2132 observer_notify_architecture_changed (new_gdbarch);
a3ecef73 2133 registers_changed ();
ebdba546 2134}
104c1213 2135
104c1213 2136extern void _initialize_gdbarch (void);
b4a20239 2137
104c1213 2138void
34620563 2139_initialize_gdbarch (void)
104c1213 2140{
85c07804
AC
2141 add_setshow_zinteger_cmd ("arch", class_maintenance, &gdbarch_debug, _("\\
2142Set architecture debugging."), _("\\
2143Show architecture debugging."), _("\\
2144When non-zero, architecture debugging is enabled."),
2145 NULL,
920d2a44 2146 show_gdbarch_debug,
85c07804 2147 &setdebuglist, &showdebuglist);
104c1213
JM
2148}
2149EOF
2150
2151# close things off
2152exec 1>&2
2153#../move-if-change new-gdbarch.c gdbarch.c
59233f88 2154compare_new gdbarch.c
This page took 1.116976 seconds and 4 git commands to generate.