2000-04-27 Michael Snyder <msnyder@seadog.cygnus.com>
[external/binutils.git] / gdb / gdbarch.c
1 /* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
2
3 /* Dynamic architecture support for GDB, the GNU debugger.
4    Copyright 1998-1999, Free Software Foundation, Inc.
5
6    This file is part of GDB.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 2 of the License, or
11    (at your option) any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 59 Temple Place - Suite 330,
21    Boston, MA 02111-1307, USA.  */
22
23 /* This file was created with the aid of ``gdbarch.sh''.
24
25    The bourn shell script ``gdbarch.sh'' creates the files
26    ``new-gdbarch.c'' and ``new-gdbarch.h and then compares them
27    against the existing ``gdbarch.[hc]''.  Any differences found
28    being reported.
29
30    If editing this file, please also run gdbarch.sh and merge any
31    changes into that script. Conversely, when makeing sweeping changes
32    to this file, modifying gdbarch.sh and using its output may prove
33    easier. */
34
35
36 #include "defs.h"
37 #include "arch-utils.h"
38
39 #if GDB_MULTI_ARCH
40 #include "gdbcmd.h"
41 #include "inferior.h" /* enum CALL_DUMMY_LOCATION et.al. */
42 #else
43 /* Just include everything in sight so that the every old definition
44    of macro is visible. */
45 #include "gdb_string.h"
46 #include <ctype.h>
47 #include "symtab.h"
48 #include "frame.h"
49 #include "inferior.h"
50 #include "breakpoint.h"
51 #include "gdb_wait.h"
52 #include "gdbcore.h"
53 #include "gdbcmd.h"
54 #include "target.h"
55 #include "gdbthread.h"
56 #include "annotate.h"
57 #include "symfile.h"            /* for overlay functions */
58 #endif
59 #include "symcat.h"
60
61
62 /* Static function declarations */
63
64 static void verify_gdbarch (struct gdbarch *gdbarch);
65 static void init_gdbarch_data (struct gdbarch *);
66 static void init_gdbarch_swap (struct gdbarch *);
67 static void swapout_gdbarch_swap (struct gdbarch *);
68 static void swapin_gdbarch_swap (struct gdbarch *);
69
70 /* Convenience macro for allocting typesafe memory. */
71
72 #ifndef XMALLOC
73 #define XMALLOC(TYPE) (TYPE*) xmalloc (sizeof (TYPE))
74 #endif
75
76
77 /* Non-zero if we want to trace architecture code.  */
78
79 #ifndef GDBARCH_DEBUG
80 #define GDBARCH_DEBUG 0
81 #endif
82 int gdbarch_debug = GDBARCH_DEBUG;
83
84
85 /* Maintain the struct gdbarch object */
86
87 struct gdbarch
88 {
89   /* basic architectural information */
90   const struct bfd_arch_info * bfd_arch_info;
91   int byte_order;
92
93   /* target specific vector. */
94   struct gdbarch_tdep *tdep;
95
96   /* per-architecture data-pointers */
97   int nr_data;
98   void **data;
99
100   /* per-architecture swap-regions */
101   struct gdbarch_swap *swap;
102
103   /* Multi-arch values.
104
105      When extending this structure you must:
106
107      Add the field below.
108
109      Declare set/get functions and define the corresponding
110      macro in gdbarch.h.
111
112      gdbarch_alloc(): If zero/NULL is not a suitable default,
113      initialize the new field.
114
115      verify_gdbarch(): Confirm that the target updated the field
116      correctly.
117
118      gdbarch_dump(): Add a fprintf_unfiltered call to so that the new
119      field is dumped out
120
121      ``startup_gdbarch()'': Append an initial value to the static
122      variable (base values on the host's c-type system).
123
124      get_gdbarch(): Implement the set/get functions (probably using
125      the macro's as shortcuts).
126
127      */
128
129   int bfd_vma_bit;
130   int ptr_bit;
131   int short_bit;
132   int int_bit;
133   int long_bit;
134   int long_long_bit;
135   int float_bit;
136   int double_bit;
137   int long_double_bit;
138   int ieee_float;
139   gdbarch_read_pc_ftype *read_pc;
140   gdbarch_write_pc_ftype *write_pc;
141   gdbarch_read_fp_ftype *read_fp;
142   gdbarch_write_fp_ftype *write_fp;
143   gdbarch_read_sp_ftype *read_sp;
144   gdbarch_write_sp_ftype *write_sp;
145   int num_regs;
146   int sp_regnum;
147   int fp_regnum;
148   int pc_regnum;
149   gdbarch_register_name_ftype *register_name;
150   int register_size;
151   int register_bytes;
152   gdbarch_register_byte_ftype *register_byte;
153   gdbarch_register_raw_size_ftype *register_raw_size;
154   int max_register_raw_size;
155   gdbarch_register_virtual_size_ftype *register_virtual_size;
156   int max_register_virtual_size;
157   gdbarch_register_virtual_type_ftype *register_virtual_type;
158   int use_generic_dummy_frames;
159   int call_dummy_location;
160   gdbarch_call_dummy_address_ftype *call_dummy_address;
161   CORE_ADDR call_dummy_start_offset;
162   CORE_ADDR call_dummy_breakpoint_offset;
163   int call_dummy_breakpoint_offset_p;
164   int call_dummy_length;
165   gdbarch_pc_in_call_dummy_ftype *pc_in_call_dummy;
166   int call_dummy_p;
167   LONGEST * call_dummy_words;
168   int sizeof_call_dummy_words;
169   int call_dummy_stack_adjust_p;
170   int call_dummy_stack_adjust;
171   gdbarch_fix_call_dummy_ftype *fix_call_dummy;
172   int believe_pcc_promotion;
173   int believe_pcc_promotion_type;
174   gdbarch_coerce_float_to_double_ftype *coerce_float_to_double;
175   gdbarch_get_saved_register_ftype *get_saved_register;
176   gdbarch_register_convertible_ftype *register_convertible;
177   gdbarch_register_convert_to_virtual_ftype *register_convert_to_virtual;
178   gdbarch_register_convert_to_raw_ftype *register_convert_to_raw;
179   gdbarch_pointer_to_address_ftype *pointer_to_address;
180   gdbarch_address_to_pointer_ftype *address_to_pointer;
181   gdbarch_return_value_on_stack_ftype *return_value_on_stack;
182   gdbarch_extract_return_value_ftype *extract_return_value;
183   gdbarch_push_arguments_ftype *push_arguments;
184   gdbarch_push_dummy_frame_ftype *push_dummy_frame;
185   gdbarch_push_return_address_ftype *push_return_address;
186   gdbarch_pop_frame_ftype *pop_frame;
187   gdbarch_d10v_make_daddr_ftype *d10v_make_daddr;
188   gdbarch_d10v_make_iaddr_ftype *d10v_make_iaddr;
189   gdbarch_d10v_daddr_p_ftype *d10v_daddr_p;
190   gdbarch_d10v_iaddr_p_ftype *d10v_iaddr_p;
191   gdbarch_d10v_convert_daddr_to_raw_ftype *d10v_convert_daddr_to_raw;
192   gdbarch_d10v_convert_iaddr_to_raw_ftype *d10v_convert_iaddr_to_raw;
193   gdbarch_store_struct_return_ftype *store_struct_return;
194   gdbarch_store_return_value_ftype *store_return_value;
195   gdbarch_extract_struct_value_address_ftype *extract_struct_value_address;
196   gdbarch_use_struct_convention_ftype *use_struct_convention;
197   gdbarch_frame_init_saved_regs_ftype *frame_init_saved_regs;
198   gdbarch_init_extra_frame_info_ftype *init_extra_frame_info;
199   gdbarch_skip_prologue_ftype *skip_prologue;
200   gdbarch_inner_than_ftype *inner_than;
201   gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc;
202   gdbarch_memory_insert_breakpoint_ftype *memory_insert_breakpoint;
203   gdbarch_memory_remove_breakpoint_ftype *memory_remove_breakpoint;
204   CORE_ADDR decr_pc_after_break;
205   CORE_ADDR function_start_offset;
206   gdbarch_remote_translate_xfer_address_ftype *remote_translate_xfer_address;
207   CORE_ADDR frame_args_skip;
208   gdbarch_frameless_function_invocation_ftype *frameless_function_invocation;
209   gdbarch_frame_chain_ftype *frame_chain;
210   gdbarch_frame_chain_valid_ftype *frame_chain_valid;
211   gdbarch_frame_saved_pc_ftype *frame_saved_pc;
212   gdbarch_frame_args_address_ftype *frame_args_address;
213   gdbarch_frame_locals_address_ftype *frame_locals_address;
214   gdbarch_saved_pc_after_call_ftype *saved_pc_after_call;
215   gdbarch_frame_num_args_ftype *frame_num_args;
216   gdbarch_stack_align_ftype *stack_align;
217   gdbarch_reg_struct_has_addr_ftype *reg_struct_has_addr;
218 };
219
220
221 /* The default architecture uses host values (for want of a better
222    choice). */
223
224 extern const struct bfd_arch_info bfd_default_arch_struct;
225
226 struct gdbarch startup_gdbarch = {
227   /* basic architecture information */
228   &bfd_default_arch_struct,
229   BIG_ENDIAN,
230   /* target specific vector */
231   NULL,
232   /*per-architecture data-pointers and swap regions */
233   0, NULL, NULL,
234   /* Multi-arch values */
235   8 * sizeof (void*),
236   8 * sizeof (void*),
237   8 * sizeof (short),
238   8 * sizeof (int),
239   8 * sizeof (long),
240   8 * sizeof (LONGEST),
241   8 * sizeof (float),
242   8 * sizeof (double),
243   8 * sizeof (long double),
244   0,
245   0,
246   0,
247   0,
248   0,
249   0,
250   0,
251   0,
252   0,
253   0,
254   0,
255   0,
256   0,
257   0,
258   0,
259   0,
260   0,
261   0,
262   0,
263   0,
264   0,
265   0,
266   0,
267   0,
268   0,
269   0,
270   0,
271   0,
272   0,
273   0,
274   0,
275   0,
276   0,
277   0,
278   0,
279   0,
280   0,
281   generic_get_saved_register,
282   0,
283   0,
284   0,
285   0,
286   0,
287   0,
288   0,
289   0,
290   0,
291   0,
292   0,
293   0,
294   0,
295   0,
296   0,
297   0,
298   0,
299   0,
300   0,
301   0,
302   0,
303   0,
304   0,
305   0,
306   0,
307   0,
308   0,
309   0,
310   0,
311   0,
312   0,
313   0,
314   0,
315   0,
316   0,
317   0,
318   0,
319   0,
320   0,
321   0,
322   0,
323   0,
324   /* startup_gdbarch() */
325 };
326 struct gdbarch *current_gdbarch = &startup_gdbarch;
327
328
329 /* Create a new ``struct gdbarch'' based in information provided by
330    ``struct gdbarch_info''. */
331
332 struct gdbarch *
333 gdbarch_alloc (const struct gdbarch_info *info,
334                struct gdbarch_tdep *tdep)
335 {
336   struct gdbarch *gdbarch = XMALLOC (struct gdbarch);
337   memset (gdbarch, 0, sizeof (*gdbarch));
338
339   gdbarch->tdep = tdep;
340
341   gdbarch->bfd_arch_info = info->bfd_arch_info;
342   gdbarch->byte_order = info->byte_order;
343
344   /* Force the explicit initialization of these. */
345   gdbarch->bfd_vma_bit = TARGET_ARCHITECTURE->bits_per_address;
346   gdbarch->num_regs = -1;
347   gdbarch->sp_regnum = -1;
348   gdbarch->fp_regnum = -1;
349   gdbarch->pc_regnum = -1;
350   gdbarch->register_name = legacy_register_name;
351   gdbarch->register_size = -1;
352   gdbarch->register_bytes = -1;
353   gdbarch->max_register_raw_size = -1;
354   gdbarch->max_register_virtual_size = -1;
355   gdbarch->use_generic_dummy_frames = -1;
356   gdbarch->call_dummy_start_offset = -1;
357   gdbarch->call_dummy_breakpoint_offset = -1;
358   gdbarch->call_dummy_breakpoint_offset_p = -1;
359   gdbarch->call_dummy_length = -1;
360   gdbarch->call_dummy_p = -1;
361   gdbarch->call_dummy_words = legacy_call_dummy_words;
362   gdbarch->sizeof_call_dummy_words = legacy_sizeof_call_dummy_words;
363   gdbarch->call_dummy_stack_adjust_p = -1;
364   gdbarch->coerce_float_to_double = default_coerce_float_to_double;
365   gdbarch->register_convertible = generic_register_convertible_not;
366   gdbarch->pointer_to_address = generic_pointer_to_address;
367   gdbarch->address_to_pointer = generic_address_to_pointer;
368   gdbarch->return_value_on_stack = generic_return_value_on_stack_not;
369   gdbarch->breakpoint_from_pc = legacy_breakpoint_from_pc;
370   gdbarch->memory_insert_breakpoint = default_memory_insert_breakpoint;
371   gdbarch->memory_remove_breakpoint = default_memory_remove_breakpoint;
372   gdbarch->decr_pc_after_break = -1;
373   gdbarch->function_start_offset = -1;
374   gdbarch->remote_translate_xfer_address = generic_remote_translate_xfer_address;
375   gdbarch->frame_args_skip = -1;
376   gdbarch->frameless_function_invocation = generic_frameless_function_invocation_not;
377   /* gdbarch_alloc() */
378
379   return gdbarch;
380 }
381
382
383 /* Free a gdbarch struct.  This should never happen in normal
384    operation --- once you've created a gdbarch, you keep it around.
385    However, if an architecture's init function encounters an error
386    building the structure, it may need to clean up a partially
387    constructed gdbarch.  */
388 void
389 gdbarch_free (struct gdbarch *arch)
390 {
391   /* At the moment, this is trivial.  */
392   free (arch);
393 }
394
395
396 /* Ensure that all values in a GDBARCH are reasonable. */
397
398 static void
399 verify_gdbarch (struct gdbarch *gdbarch)
400 {
401   /* Only perform sanity checks on a multi-arch target. */
402   if (GDB_MULTI_ARCH <= 0)
403     return;
404   /* fundamental */
405   if (gdbarch->byte_order == 0)
406     internal_error ("verify_gdbarch: byte-order unset");
407   if (gdbarch->bfd_arch_info == NULL)
408     internal_error ("verify_gdbarch: bfd_arch_info unset");
409   /* Check those that need to be defined for the given multi-arch level. */
410   /* Skip verify of bfd_vma_bit, invalid_p == 0 */
411   if ((GDB_MULTI_ARCH >= 1)
412       && (gdbarch->ptr_bit == 0))
413     internal_error ("gdbarch: verify_gdbarch: ptr_bit invalid");
414   if ((GDB_MULTI_ARCH >= 1)
415       && (gdbarch->short_bit == 0))
416     internal_error ("gdbarch: verify_gdbarch: short_bit invalid");
417   if ((GDB_MULTI_ARCH >= 1)
418       && (gdbarch->int_bit == 0))
419     internal_error ("gdbarch: verify_gdbarch: int_bit invalid");
420   if ((GDB_MULTI_ARCH >= 1)
421       && (gdbarch->long_bit == 0))
422     internal_error ("gdbarch: verify_gdbarch: long_bit invalid");
423   if ((GDB_MULTI_ARCH >= 1)
424       && (gdbarch->long_long_bit == 0))
425     internal_error ("gdbarch: verify_gdbarch: long_long_bit invalid");
426   if ((GDB_MULTI_ARCH >= 1)
427       && (gdbarch->float_bit == 0))
428     internal_error ("gdbarch: verify_gdbarch: float_bit invalid");
429   if ((GDB_MULTI_ARCH >= 1)
430       && (gdbarch->double_bit == 0))
431     internal_error ("gdbarch: verify_gdbarch: double_bit invalid");
432   if ((GDB_MULTI_ARCH >= 1)
433       && (gdbarch->long_double_bit == 0))
434     internal_error ("gdbarch: verify_gdbarch: long_double_bit invalid");
435   /* Skip verify of ieee_float, invalid_p == 0 */
436   if ((GDB_MULTI_ARCH >= 1)
437       && (gdbarch->read_pc == 0))
438     internal_error ("gdbarch: verify_gdbarch: read_pc invalid");
439   if ((GDB_MULTI_ARCH >= 1)
440       && (gdbarch->write_pc == 0))
441     internal_error ("gdbarch: verify_gdbarch: write_pc invalid");
442   if ((GDB_MULTI_ARCH >= 1)
443       && (gdbarch->read_fp == 0))
444     internal_error ("gdbarch: verify_gdbarch: read_fp invalid");
445   if ((GDB_MULTI_ARCH >= 1)
446       && (gdbarch->write_fp == 0))
447     internal_error ("gdbarch: verify_gdbarch: write_fp invalid");
448   if ((GDB_MULTI_ARCH >= 1)
449       && (gdbarch->read_sp == 0))
450     internal_error ("gdbarch: verify_gdbarch: read_sp invalid");
451   if ((GDB_MULTI_ARCH >= 1)
452       && (gdbarch->write_sp == 0))
453     internal_error ("gdbarch: verify_gdbarch: write_sp invalid");
454   if ((GDB_MULTI_ARCH >= 2)
455       && (gdbarch->num_regs == -1))
456     internal_error ("gdbarch: verify_gdbarch: num_regs invalid");
457   if ((GDB_MULTI_ARCH >= 2)
458       && (gdbarch->sp_regnum == -1))
459     internal_error ("gdbarch: verify_gdbarch: sp_regnum invalid");
460   if ((GDB_MULTI_ARCH >= 2)
461       && (gdbarch->fp_regnum == -1))
462     internal_error ("gdbarch: verify_gdbarch: fp_regnum invalid");
463   if ((GDB_MULTI_ARCH >= 2)
464       && (gdbarch->pc_regnum == -1))
465     internal_error ("gdbarch: verify_gdbarch: pc_regnum invalid");
466   /* Skip verify of register_name, invalid_p == 0 */
467   if ((GDB_MULTI_ARCH >= 2)
468       && (gdbarch->register_size == -1))
469     internal_error ("gdbarch: verify_gdbarch: register_size invalid");
470   if ((GDB_MULTI_ARCH >= 2)
471       && (gdbarch->register_bytes == -1))
472     internal_error ("gdbarch: verify_gdbarch: register_bytes invalid");
473   if ((GDB_MULTI_ARCH >= 2)
474       && (gdbarch->register_byte == 0))
475     internal_error ("gdbarch: verify_gdbarch: register_byte invalid");
476   if ((GDB_MULTI_ARCH >= 2)
477       && (gdbarch->register_raw_size == 0))
478     internal_error ("gdbarch: verify_gdbarch: register_raw_size invalid");
479   if ((GDB_MULTI_ARCH >= 2)
480       && (gdbarch->max_register_raw_size == -1))
481     internal_error ("gdbarch: verify_gdbarch: max_register_raw_size invalid");
482   if ((GDB_MULTI_ARCH >= 2)
483       && (gdbarch->register_virtual_size == 0))
484     internal_error ("gdbarch: verify_gdbarch: register_virtual_size invalid");
485   if ((GDB_MULTI_ARCH >= 2)
486       && (gdbarch->max_register_virtual_size == -1))
487     internal_error ("gdbarch: verify_gdbarch: max_register_virtual_size invalid");
488   if ((GDB_MULTI_ARCH >= 2)
489       && (gdbarch->register_virtual_type == 0))
490     internal_error ("gdbarch: verify_gdbarch: register_virtual_type invalid");
491   if ((GDB_MULTI_ARCH >= 1)
492       && (gdbarch->use_generic_dummy_frames == -1))
493     internal_error ("gdbarch: verify_gdbarch: use_generic_dummy_frames invalid");
494   if ((GDB_MULTI_ARCH >= 2)
495       && (gdbarch->call_dummy_location == 0))
496     internal_error ("gdbarch: verify_gdbarch: call_dummy_location invalid");
497   if ((GDB_MULTI_ARCH >= 2)
498       && (gdbarch->call_dummy_location == AT_ENTRY_POINT && gdbarch->call_dummy_address == 0))
499     internal_error ("gdbarch: verify_gdbarch: call_dummy_address invalid");
500   if ((GDB_MULTI_ARCH >= 2)
501       && (gdbarch->call_dummy_start_offset == -1))
502     internal_error ("gdbarch: verify_gdbarch: call_dummy_start_offset invalid");
503   if ((GDB_MULTI_ARCH >= 2)
504       && (gdbarch->call_dummy_breakpoint_offset == -1))
505     internal_error ("gdbarch: verify_gdbarch: call_dummy_breakpoint_offset invalid");
506   if ((GDB_MULTI_ARCH >= 1)
507       && (gdbarch->call_dummy_breakpoint_offset_p == -1))
508     internal_error ("gdbarch: verify_gdbarch: call_dummy_breakpoint_offset_p invalid");
509   if ((GDB_MULTI_ARCH >= 2)
510       && (gdbarch->call_dummy_length == -1))
511     internal_error ("gdbarch: verify_gdbarch: call_dummy_length invalid");
512   if ((GDB_MULTI_ARCH >= 2)
513       && (gdbarch->pc_in_call_dummy == 0))
514     internal_error ("gdbarch: verify_gdbarch: pc_in_call_dummy invalid");
515   if ((GDB_MULTI_ARCH >= 1)
516       && (gdbarch->call_dummy_p == -1))
517     internal_error ("gdbarch: verify_gdbarch: call_dummy_p invalid");
518   /* Skip verify of call_dummy_words, invalid_p == 0 */
519   /* Skip verify of sizeof_call_dummy_words, invalid_p == 0 */
520   if ((GDB_MULTI_ARCH >= 1)
521       && (gdbarch->call_dummy_stack_adjust_p == -1))
522     internal_error ("gdbarch: verify_gdbarch: call_dummy_stack_adjust_p invalid");
523   if ((GDB_MULTI_ARCH >= 2)
524       && (gdbarch->call_dummy_stack_adjust_p && gdbarch->call_dummy_stack_adjust == 0))
525     internal_error ("gdbarch: verify_gdbarch: call_dummy_stack_adjust invalid");
526   if ((GDB_MULTI_ARCH >= 2)
527       && (gdbarch->fix_call_dummy == 0))
528     internal_error ("gdbarch: verify_gdbarch: fix_call_dummy invalid");
529   /* Skip verify of coerce_float_to_double, invalid_p == 0 */
530   if ((GDB_MULTI_ARCH >= 1)
531       && (gdbarch->get_saved_register == 0))
532     internal_error ("gdbarch: verify_gdbarch: get_saved_register invalid");
533   /* Skip verify of register_convertible, invalid_p == 0 */
534   /* Skip verify of register_convert_to_virtual, invalid_p == 0 */
535   /* Skip verify of register_convert_to_raw, invalid_p == 0 */
536   /* Skip verify of pointer_to_address, invalid_p == 0 */
537   /* Skip verify of address_to_pointer, invalid_p == 0 */
538   /* Skip verify of return_value_on_stack, invalid_p == 0 */
539   if ((GDB_MULTI_ARCH >= 2)
540       && (gdbarch->extract_return_value == 0))
541     internal_error ("gdbarch: verify_gdbarch: extract_return_value invalid");
542   if ((GDB_MULTI_ARCH >= 1)
543       && (gdbarch->push_arguments == 0))
544     internal_error ("gdbarch: verify_gdbarch: push_arguments invalid");
545   if ((GDB_MULTI_ARCH >= 2)
546       && (gdbarch->push_dummy_frame == 0))
547     internal_error ("gdbarch: verify_gdbarch: push_dummy_frame invalid");
548   if ((GDB_MULTI_ARCH >= 1)
549       && (gdbarch->push_return_address == 0))
550     internal_error ("gdbarch: verify_gdbarch: push_return_address invalid");
551   if ((GDB_MULTI_ARCH >= 2)
552       && (gdbarch->pop_frame == 0))
553     internal_error ("gdbarch: verify_gdbarch: pop_frame invalid");
554   /* Skip verify of d10v_make_daddr, invalid_p == 0 */
555   /* Skip verify of d10v_make_iaddr, invalid_p == 0 */
556   /* Skip verify of d10v_daddr_p, invalid_p == 0 */
557   /* Skip verify of d10v_iaddr_p, invalid_p == 0 */
558   /* Skip verify of d10v_convert_daddr_to_raw, invalid_p == 0 */
559   /* Skip verify of d10v_convert_iaddr_to_raw, invalid_p == 0 */
560   if ((GDB_MULTI_ARCH >= 2)
561       && (gdbarch->store_struct_return == 0))
562     internal_error ("gdbarch: verify_gdbarch: store_struct_return invalid");
563   if ((GDB_MULTI_ARCH >= 2)
564       && (gdbarch->store_return_value == 0))
565     internal_error ("gdbarch: verify_gdbarch: store_return_value invalid");
566   if ((GDB_MULTI_ARCH >= 2)
567       && (gdbarch->extract_struct_value_address == 0))
568     internal_error ("gdbarch: verify_gdbarch: extract_struct_value_address invalid");
569   if ((GDB_MULTI_ARCH >= 2)
570       && (gdbarch->use_struct_convention == 0))
571     internal_error ("gdbarch: verify_gdbarch: use_struct_convention invalid");
572   if ((GDB_MULTI_ARCH >= 2)
573       && (gdbarch->frame_init_saved_regs == 0))
574     internal_error ("gdbarch: verify_gdbarch: frame_init_saved_regs invalid");
575   if ((GDB_MULTI_ARCH >= 2)
576       && (gdbarch->init_extra_frame_info == 0))
577     internal_error ("gdbarch: verify_gdbarch: init_extra_frame_info invalid");
578   if ((GDB_MULTI_ARCH >= 2)
579       && (gdbarch->skip_prologue == 0))
580     internal_error ("gdbarch: verify_gdbarch: skip_prologue invalid");
581   if ((GDB_MULTI_ARCH >= 2)
582       && (gdbarch->inner_than == 0))
583     internal_error ("gdbarch: verify_gdbarch: inner_than invalid");
584   /* Skip verify of breakpoint_from_pc, invalid_p == 0 */
585   /* Skip verify of memory_insert_breakpoint, invalid_p == 0 */
586   /* Skip verify of memory_remove_breakpoint, invalid_p == 0 */
587   if ((GDB_MULTI_ARCH >= 2)
588       && (gdbarch->decr_pc_after_break == -1))
589     internal_error ("gdbarch: verify_gdbarch: decr_pc_after_break invalid");
590   if ((GDB_MULTI_ARCH >= 2)
591       && (gdbarch->function_start_offset == -1))
592     internal_error ("gdbarch: verify_gdbarch: function_start_offset invalid");
593   /* Skip verify of remote_translate_xfer_address, invalid_p == 0 */
594   if ((GDB_MULTI_ARCH >= 2)
595       && (gdbarch->frame_args_skip == -1))
596     internal_error ("gdbarch: verify_gdbarch: frame_args_skip invalid");
597   /* Skip verify of frameless_function_invocation, invalid_p == 0 */
598   if ((GDB_MULTI_ARCH >= 2)
599       && (gdbarch->frame_chain == 0))
600     internal_error ("gdbarch: verify_gdbarch: frame_chain invalid");
601   if ((GDB_MULTI_ARCH >= 1)
602       && (gdbarch->frame_chain_valid == 0))
603     internal_error ("gdbarch: verify_gdbarch: frame_chain_valid invalid");
604   if ((GDB_MULTI_ARCH >= 2)
605       && (gdbarch->frame_saved_pc == 0))
606     internal_error ("gdbarch: verify_gdbarch: frame_saved_pc invalid");
607   if ((GDB_MULTI_ARCH >= 2)
608       && (gdbarch->frame_args_address == 0))
609     internal_error ("gdbarch: verify_gdbarch: frame_args_address invalid");
610   if ((GDB_MULTI_ARCH >= 2)
611       && (gdbarch->frame_locals_address == 0))
612     internal_error ("gdbarch: verify_gdbarch: frame_locals_address invalid");
613   if ((GDB_MULTI_ARCH >= 2)
614       && (gdbarch->saved_pc_after_call == 0))
615     internal_error ("gdbarch: verify_gdbarch: saved_pc_after_call invalid");
616   if ((GDB_MULTI_ARCH >= 2)
617       && (gdbarch->frame_num_args == 0))
618     internal_error ("gdbarch: verify_gdbarch: frame_num_args invalid");
619   /* Skip verify of stack_align, has predicate */
620   /* Skip verify of reg_struct_has_addr, has predicate */
621 }
622
623
624 /* Print out the details of the current architecture. */
625
626 void
627 gdbarch_dump (void)
628 {
629   if (TARGET_ARCHITECTURE != NULL)
630     fprintf_unfiltered (gdb_stdlog,
631                         "gdbarch_update: TARGET_ARCHITECTURE = %s\n",
632                         TARGET_ARCHITECTURE->printable_name);
633   fprintf_unfiltered (gdb_stdlog,
634                       "gdbarch_update: TARGET_BYTE_ORDER = %ld\n",
635                       (long) TARGET_BYTE_ORDER);
636   fprintf_unfiltered (gdb_stdlog,
637                       "gdbarch_update: TARGET_BFD_VMA_BIT = %ld\n",
638                       (long) TARGET_BFD_VMA_BIT);
639   fprintf_unfiltered (gdb_stdlog,
640                       "gdbarch_update: TARGET_PTR_BIT = %ld\n",
641                       (long) TARGET_PTR_BIT);
642   fprintf_unfiltered (gdb_stdlog,
643                       "gdbarch_update: TARGET_SHORT_BIT = %ld\n",
644                       (long) TARGET_SHORT_BIT);
645   fprintf_unfiltered (gdb_stdlog,
646                       "gdbarch_update: TARGET_INT_BIT = %ld\n",
647                       (long) TARGET_INT_BIT);
648   fprintf_unfiltered (gdb_stdlog,
649                       "gdbarch_update: TARGET_LONG_BIT = %ld\n",
650                       (long) TARGET_LONG_BIT);
651   fprintf_unfiltered (gdb_stdlog,
652                       "gdbarch_update: TARGET_LONG_LONG_BIT = %ld\n",
653                       (long) TARGET_LONG_LONG_BIT);
654   fprintf_unfiltered (gdb_stdlog,
655                       "gdbarch_update: TARGET_FLOAT_BIT = %ld\n",
656                       (long) TARGET_FLOAT_BIT);
657   fprintf_unfiltered (gdb_stdlog,
658                       "gdbarch_update: TARGET_DOUBLE_BIT = %ld\n",
659                       (long) TARGET_DOUBLE_BIT);
660   fprintf_unfiltered (gdb_stdlog,
661                       "gdbarch_update: TARGET_LONG_DOUBLE_BIT = %ld\n",
662                       (long) TARGET_LONG_DOUBLE_BIT);
663   fprintf_unfiltered (gdb_stdlog,
664                       "gdbarch_update: IEEE_FLOAT = %ld\n",
665                       (long) IEEE_FLOAT);
666   fprintf_unfiltered (gdb_stdlog,
667                       "gdbarch_update: TARGET_READ_PC = 0x%08lx\n",
668                       (long) current_gdbarch->read_pc
669                       /*TARGET_READ_PC ()*/);
670   fprintf_unfiltered (gdb_stdlog,
671                       "gdbarch_update: TARGET_WRITE_PC = 0x%08lx\n",
672                       (long) current_gdbarch->write_pc
673                       /*TARGET_WRITE_PC ()*/);
674   fprintf_unfiltered (gdb_stdlog,
675                       "gdbarch_update: TARGET_READ_FP = 0x%08lx\n",
676                       (long) current_gdbarch->read_fp
677                       /*TARGET_READ_FP ()*/);
678   fprintf_unfiltered (gdb_stdlog,
679                       "gdbarch_update: TARGET_WRITE_FP = 0x%08lx\n",
680                       (long) current_gdbarch->write_fp
681                       /*TARGET_WRITE_FP ()*/);
682   fprintf_unfiltered (gdb_stdlog,
683                       "gdbarch_update: TARGET_READ_SP = 0x%08lx\n",
684                       (long) current_gdbarch->read_sp
685                       /*TARGET_READ_SP ()*/);
686   fprintf_unfiltered (gdb_stdlog,
687                       "gdbarch_update: TARGET_WRITE_SP = 0x%08lx\n",
688                       (long) current_gdbarch->write_sp
689                       /*TARGET_WRITE_SP ()*/);
690   fprintf_unfiltered (gdb_stdlog,
691                       "gdbarch_update: NUM_REGS = %ld\n",
692                       (long) NUM_REGS);
693   fprintf_unfiltered (gdb_stdlog,
694                       "gdbarch_update: SP_REGNUM = %ld\n",
695                       (long) SP_REGNUM);
696   fprintf_unfiltered (gdb_stdlog,
697                       "gdbarch_update: FP_REGNUM = %ld\n",
698                       (long) FP_REGNUM);
699   fprintf_unfiltered (gdb_stdlog,
700                       "gdbarch_update: PC_REGNUM = %ld\n",
701                       (long) PC_REGNUM);
702   fprintf_unfiltered (gdb_stdlog,
703                       "gdbarch_update: REGISTER_NAME = 0x%08lx\n",
704                       (long) current_gdbarch->register_name
705                       /*REGISTER_NAME ()*/);
706   fprintf_unfiltered (gdb_stdlog,
707                       "gdbarch_update: REGISTER_SIZE = %ld\n",
708                       (long) REGISTER_SIZE);
709   fprintf_unfiltered (gdb_stdlog,
710                       "gdbarch_update: REGISTER_BYTES = %ld\n",
711                       (long) REGISTER_BYTES);
712   fprintf_unfiltered (gdb_stdlog,
713                       "gdbarch_update: REGISTER_BYTE = 0x%08lx\n",
714                       (long) current_gdbarch->register_byte
715                       /*REGISTER_BYTE ()*/);
716   fprintf_unfiltered (gdb_stdlog,
717                       "gdbarch_update: REGISTER_RAW_SIZE = 0x%08lx\n",
718                       (long) current_gdbarch->register_raw_size
719                       /*REGISTER_RAW_SIZE ()*/);
720   fprintf_unfiltered (gdb_stdlog,
721                       "gdbarch_update: MAX_REGISTER_RAW_SIZE = %ld\n",
722                       (long) MAX_REGISTER_RAW_SIZE);
723   fprintf_unfiltered (gdb_stdlog,
724                       "gdbarch_update: REGISTER_VIRTUAL_SIZE = 0x%08lx\n",
725                       (long) current_gdbarch->register_virtual_size
726                       /*REGISTER_VIRTUAL_SIZE ()*/);
727   fprintf_unfiltered (gdb_stdlog,
728                       "gdbarch_update: MAX_REGISTER_VIRTUAL_SIZE = %ld\n",
729                       (long) MAX_REGISTER_VIRTUAL_SIZE);
730   fprintf_unfiltered (gdb_stdlog,
731                       "gdbarch_update: REGISTER_VIRTUAL_TYPE = 0x%08lx\n",
732                       (long) current_gdbarch->register_virtual_type
733                       /*REGISTER_VIRTUAL_TYPE ()*/);
734   fprintf_unfiltered (gdb_stdlog,
735                       "gdbarch_update: USE_GENERIC_DUMMY_FRAMES = %ld\n",
736                       (long) USE_GENERIC_DUMMY_FRAMES);
737   fprintf_unfiltered (gdb_stdlog,
738                       "gdbarch_update: CALL_DUMMY_LOCATION = %ld\n",
739                       (long) CALL_DUMMY_LOCATION);
740   fprintf_unfiltered (gdb_stdlog,
741                       "gdbarch_update: CALL_DUMMY_ADDRESS = 0x%08lx\n",
742                       (long) current_gdbarch->call_dummy_address
743                       /*CALL_DUMMY_ADDRESS ()*/);
744   fprintf_unfiltered (gdb_stdlog,
745                       "gdbarch_update: CALL_DUMMY_START_OFFSET = 0x%08lx\n",
746                       (long) CALL_DUMMY_START_OFFSET);
747   fprintf_unfiltered (gdb_stdlog,
748                       "gdbarch_update: CALL_DUMMY_BREAKPOINT_OFFSET = 0x%08lx\n",
749                       (long) CALL_DUMMY_BREAKPOINT_OFFSET);
750   fprintf_unfiltered (gdb_stdlog,
751                       "gdbarch_update: CALL_DUMMY_BREAKPOINT_OFFSET_P = %ld\n",
752                       (long) CALL_DUMMY_BREAKPOINT_OFFSET_P);
753   if (CALL_DUMMY_LOCATION == BEFORE_TEXT_END || CALL_DUMMY_LOCATION == AFTER_TEXT_END)
754     fprintf_unfiltered (gdb_stdlog,
755                         "gdbarch_update: CALL_DUMMY_LENGTH = %ld\n",
756                         (long) CALL_DUMMY_LENGTH);
757   fprintf_unfiltered (gdb_stdlog,
758                       "gdbarch_update: PC_IN_CALL_DUMMY = 0x%08lx\n",
759                       (long) current_gdbarch->pc_in_call_dummy
760                       /*PC_IN_CALL_DUMMY ()*/);
761   fprintf_unfiltered (gdb_stdlog,
762                       "gdbarch_update: CALL_DUMMY_P = %ld\n",
763                       (long) CALL_DUMMY_P);
764   fprintf_unfiltered (gdb_stdlog,
765                       "gdbarch_update: CALL_DUMMY_WORDS = 0x%08lx\n",
766                       (long) CALL_DUMMY_WORDS);
767   fprintf_unfiltered (gdb_stdlog,
768                       "gdbarch_update: SIZEOF_CALL_DUMMY_WORDS = 0x%08lx\n",
769                       (long) SIZEOF_CALL_DUMMY_WORDS);
770   fprintf_unfiltered (gdb_stdlog,
771                       "gdbarch_update: CALL_DUMMY_STACK_ADJUST_P = 0x%08lx\n",
772                       (long) CALL_DUMMY_STACK_ADJUST_P);
773   if (CALL_DUMMY_STACK_ADJUST_P)
774     fprintf_unfiltered (gdb_stdlog,
775                         "gdbarch_update: CALL_DUMMY_STACK_ADJUST = 0x%08lx\n",
776                         (long) CALL_DUMMY_STACK_ADJUST);
777   fprintf_unfiltered (gdb_stdlog,
778                       "gdbarch_update: FIX_CALL_DUMMY = 0x%08lx\n",
779                       (long) current_gdbarch->fix_call_dummy
780                       /*FIX_CALL_DUMMY ()*/);
781 #ifdef BELIEVE_PCC_PROMOTION
782   fprintf_unfiltered (gdb_stdlog,
783                       "gdbarch_update: BELIEVE_PCC_PROMOTION = %ld\n",
784                       (long) BELIEVE_PCC_PROMOTION);
785 #endif
786 #ifdef BELIEVE_PCC_PROMOTION_TYPE
787   fprintf_unfiltered (gdb_stdlog,
788                       "gdbarch_update: BELIEVE_PCC_PROMOTION_TYPE = %ld\n",
789                       (long) BELIEVE_PCC_PROMOTION_TYPE);
790 #endif
791   fprintf_unfiltered (gdb_stdlog,
792                       "gdbarch_update: COERCE_FLOAT_TO_DOUBLE = 0x%08lx\n",
793                       (long) current_gdbarch->coerce_float_to_double
794                       /*COERCE_FLOAT_TO_DOUBLE ()*/);
795   fprintf_unfiltered (gdb_stdlog,
796                       "gdbarch_update: GET_SAVED_REGISTER = 0x%08lx\n",
797                       (long) current_gdbarch->get_saved_register
798                       /*GET_SAVED_REGISTER ()*/);
799   fprintf_unfiltered (gdb_stdlog,
800                       "gdbarch_update: REGISTER_CONVERTIBLE = 0x%08lx\n",
801                       (long) current_gdbarch->register_convertible
802                       /*REGISTER_CONVERTIBLE ()*/);
803   fprintf_unfiltered (gdb_stdlog,
804                       "gdbarch_update: REGISTER_CONVERT_TO_VIRTUAL = 0x%08lx\n",
805                       (long) current_gdbarch->register_convert_to_virtual
806                       /*REGISTER_CONVERT_TO_VIRTUAL ()*/);
807   fprintf_unfiltered (gdb_stdlog,
808                       "gdbarch_update: REGISTER_CONVERT_TO_RAW = 0x%08lx\n",
809                       (long) current_gdbarch->register_convert_to_raw
810                       /*REGISTER_CONVERT_TO_RAW ()*/);
811   fprintf_unfiltered (gdb_stdlog,
812                       "gdbarch_update: POINTER_TO_ADDRESS = 0x%08lx\n",
813                       (long) current_gdbarch->pointer_to_address
814                       /*POINTER_TO_ADDRESS ()*/);
815   fprintf_unfiltered (gdb_stdlog,
816                       "gdbarch_update: ADDRESS_TO_POINTER = 0x%08lx\n",
817                       (long) current_gdbarch->address_to_pointer
818                       /*ADDRESS_TO_POINTER ()*/);
819   fprintf_unfiltered (gdb_stdlog,
820                       "gdbarch_update: RETURN_VALUE_ON_STACK = 0x%08lx\n",
821                       (long) current_gdbarch->return_value_on_stack
822                       /*RETURN_VALUE_ON_STACK ()*/);
823   fprintf_unfiltered (gdb_stdlog,
824                       "gdbarch_update: EXTRACT_RETURN_VALUE = 0x%08lx\n",
825                       (long) current_gdbarch->extract_return_value
826                       /*EXTRACT_RETURN_VALUE ()*/);
827   fprintf_unfiltered (gdb_stdlog,
828                       "gdbarch_update: PUSH_ARGUMENTS = 0x%08lx\n",
829                       (long) current_gdbarch->push_arguments
830                       /*PUSH_ARGUMENTS ()*/);
831   fprintf_unfiltered (gdb_stdlog,
832                       "gdbarch_update: PUSH_DUMMY_FRAME = 0x%08lx\n",
833                       (long) current_gdbarch->push_dummy_frame
834                       /*PUSH_DUMMY_FRAME ()*/);
835   fprintf_unfiltered (gdb_stdlog,
836                       "gdbarch_update: PUSH_RETURN_ADDRESS = 0x%08lx\n",
837                       (long) current_gdbarch->push_return_address
838                       /*PUSH_RETURN_ADDRESS ()*/);
839   fprintf_unfiltered (gdb_stdlog,
840                       "gdbarch_update: POP_FRAME = 0x%08lx\n",
841                       (long) current_gdbarch->pop_frame
842                       /*POP_FRAME ()*/);
843   fprintf_unfiltered (gdb_stdlog,
844                       "gdbarch_update: D10V_MAKE_DADDR = 0x%08lx\n",
845                       (long) current_gdbarch->d10v_make_daddr
846                       /*D10V_MAKE_DADDR ()*/);
847   fprintf_unfiltered (gdb_stdlog,
848                       "gdbarch_update: D10V_MAKE_IADDR = 0x%08lx\n",
849                       (long) current_gdbarch->d10v_make_iaddr
850                       /*D10V_MAKE_IADDR ()*/);
851   fprintf_unfiltered (gdb_stdlog,
852                       "gdbarch_update: D10V_DADDR_P = 0x%08lx\n",
853                       (long) current_gdbarch->d10v_daddr_p
854                       /*D10V_DADDR_P ()*/);
855   fprintf_unfiltered (gdb_stdlog,
856                       "gdbarch_update: D10V_IADDR_P = 0x%08lx\n",
857                       (long) current_gdbarch->d10v_iaddr_p
858                       /*D10V_IADDR_P ()*/);
859   fprintf_unfiltered (gdb_stdlog,
860                       "gdbarch_update: D10V_CONVERT_DADDR_TO_RAW = 0x%08lx\n",
861                       (long) current_gdbarch->d10v_convert_daddr_to_raw
862                       /*D10V_CONVERT_DADDR_TO_RAW ()*/);
863   fprintf_unfiltered (gdb_stdlog,
864                       "gdbarch_update: D10V_CONVERT_IADDR_TO_RAW = 0x%08lx\n",
865                       (long) current_gdbarch->d10v_convert_iaddr_to_raw
866                       /*D10V_CONVERT_IADDR_TO_RAW ()*/);
867   fprintf_unfiltered (gdb_stdlog,
868                       "gdbarch_update: STORE_STRUCT_RETURN = 0x%08lx\n",
869                       (long) current_gdbarch->store_struct_return
870                       /*STORE_STRUCT_RETURN ()*/);
871   fprintf_unfiltered (gdb_stdlog,
872                       "gdbarch_update: STORE_RETURN_VALUE = 0x%08lx\n",
873                       (long) current_gdbarch->store_return_value
874                       /*STORE_RETURN_VALUE ()*/);
875   fprintf_unfiltered (gdb_stdlog,
876                       "gdbarch_update: EXTRACT_STRUCT_VALUE_ADDRESS = 0x%08lx\n",
877                       (long) current_gdbarch->extract_struct_value_address
878                       /*EXTRACT_STRUCT_VALUE_ADDRESS ()*/);
879   fprintf_unfiltered (gdb_stdlog,
880                       "gdbarch_update: USE_STRUCT_CONVENTION = 0x%08lx\n",
881                       (long) current_gdbarch->use_struct_convention
882                       /*USE_STRUCT_CONVENTION ()*/);
883   fprintf_unfiltered (gdb_stdlog,
884                       "gdbarch_update: FRAME_INIT_SAVED_REGS = 0x%08lx\n",
885                       (long) current_gdbarch->frame_init_saved_regs
886                       /*FRAME_INIT_SAVED_REGS ()*/);
887   fprintf_unfiltered (gdb_stdlog,
888                       "gdbarch_update: INIT_EXTRA_FRAME_INFO = 0x%08lx\n",
889                       (long) current_gdbarch->init_extra_frame_info
890                       /*INIT_EXTRA_FRAME_INFO ()*/);
891   fprintf_unfiltered (gdb_stdlog,
892                       "gdbarch_update: SKIP_PROLOGUE = 0x%08lx\n",
893                       (long) current_gdbarch->skip_prologue
894                       /*SKIP_PROLOGUE ()*/);
895   fprintf_unfiltered (gdb_stdlog,
896                       "gdbarch_update: INNER_THAN = 0x%08lx\n",
897                       (long) current_gdbarch->inner_than
898                       /*INNER_THAN ()*/);
899   fprintf_unfiltered (gdb_stdlog,
900                       "gdbarch_update: BREAKPOINT_FROM_PC = 0x%08lx\n",
901                       (long) current_gdbarch->breakpoint_from_pc
902                       /*BREAKPOINT_FROM_PC ()*/);
903   fprintf_unfiltered (gdb_stdlog,
904                       "gdbarch_update: MEMORY_INSERT_BREAKPOINT = 0x%08lx\n",
905                       (long) current_gdbarch->memory_insert_breakpoint
906                       /*MEMORY_INSERT_BREAKPOINT ()*/);
907   fprintf_unfiltered (gdb_stdlog,
908                       "gdbarch_update: MEMORY_REMOVE_BREAKPOINT = 0x%08lx\n",
909                       (long) current_gdbarch->memory_remove_breakpoint
910                       /*MEMORY_REMOVE_BREAKPOINT ()*/);
911   fprintf_unfiltered (gdb_stdlog,
912                       "gdbarch_update: DECR_PC_AFTER_BREAK = %ld\n",
913                       (long) DECR_PC_AFTER_BREAK);
914   fprintf_unfiltered (gdb_stdlog,
915                       "gdbarch_update: FUNCTION_START_OFFSET = %ld\n",
916                       (long) FUNCTION_START_OFFSET);
917   fprintf_unfiltered (gdb_stdlog,
918                       "gdbarch_update: REMOTE_TRANSLATE_XFER_ADDRESS = 0x%08lx\n",
919                       (long) current_gdbarch->remote_translate_xfer_address
920                       /*REMOTE_TRANSLATE_XFER_ADDRESS ()*/);
921   fprintf_unfiltered (gdb_stdlog,
922                       "gdbarch_update: FRAME_ARGS_SKIP = %ld\n",
923                       (long) FRAME_ARGS_SKIP);
924   fprintf_unfiltered (gdb_stdlog,
925                       "gdbarch_update: FRAMELESS_FUNCTION_INVOCATION = 0x%08lx\n",
926                       (long) current_gdbarch->frameless_function_invocation
927                       /*FRAMELESS_FUNCTION_INVOCATION ()*/);
928   fprintf_unfiltered (gdb_stdlog,
929                       "gdbarch_update: FRAME_CHAIN = 0x%08lx\n",
930                       (long) current_gdbarch->frame_chain
931                       /*FRAME_CHAIN ()*/);
932   fprintf_unfiltered (gdb_stdlog,
933                       "gdbarch_update: FRAME_CHAIN_VALID = 0x%08lx\n",
934                       (long) current_gdbarch->frame_chain_valid
935                       /*FRAME_CHAIN_VALID ()*/);
936   fprintf_unfiltered (gdb_stdlog,
937                       "gdbarch_update: FRAME_SAVED_PC = 0x%08lx\n",
938                       (long) current_gdbarch->frame_saved_pc
939                       /*FRAME_SAVED_PC ()*/);
940   fprintf_unfiltered (gdb_stdlog,
941                       "gdbarch_update: FRAME_ARGS_ADDRESS = 0x%08lx\n",
942                       (long) current_gdbarch->frame_args_address
943                       /*FRAME_ARGS_ADDRESS ()*/);
944   fprintf_unfiltered (gdb_stdlog,
945                       "gdbarch_update: FRAME_LOCALS_ADDRESS = 0x%08lx\n",
946                       (long) current_gdbarch->frame_locals_address
947                       /*FRAME_LOCALS_ADDRESS ()*/);
948   fprintf_unfiltered (gdb_stdlog,
949                       "gdbarch_update: SAVED_PC_AFTER_CALL = 0x%08lx\n",
950                       (long) current_gdbarch->saved_pc_after_call
951                       /*SAVED_PC_AFTER_CALL ()*/);
952   fprintf_unfiltered (gdb_stdlog,
953                       "gdbarch_update: FRAME_NUM_ARGS = 0x%08lx\n",
954                       (long) current_gdbarch->frame_num_args
955                       /*FRAME_NUM_ARGS ()*/);
956   fprintf_unfiltered (gdb_stdlog,
957                       "gdbarch_update: STACK_ALIGN = 0x%08lx\n",
958                       (long) current_gdbarch->stack_align
959                       /*STACK_ALIGN ()*/);
960   fprintf_unfiltered (gdb_stdlog,
961                       "gdbarch_update: REG_STRUCT_HAS_ADDR = 0x%08lx\n",
962                       (long) current_gdbarch->reg_struct_has_addr
963                       /*REG_STRUCT_HAS_ADDR ()*/);
964 }
965
966 struct gdbarch_tdep *
967 gdbarch_tdep (struct gdbarch *gdbarch)
968 {
969   if (gdbarch_debug >= 2)
970     fprintf_unfiltered (gdb_stdlog, "gdbarch_tdep called\n");
971   return gdbarch->tdep;
972 }
973
974
975 const struct bfd_arch_info *
976 gdbarch_bfd_arch_info (struct gdbarch *gdbarch)
977 {
978   if (gdbarch_debug >= 2)
979     fprintf_unfiltered (gdb_stdlog, "gdbarch_bfd_arch_info called\n");
980   return gdbarch->bfd_arch_info;
981 }
982
983 int
984 gdbarch_byte_order (struct gdbarch *gdbarch)
985 {
986   if (gdbarch_debug >= 2)
987     fprintf_unfiltered (gdb_stdlog, "gdbarch_byte_order called\n");
988   return gdbarch->byte_order;
989 }
990
991 int
992 gdbarch_bfd_vma_bit (struct gdbarch *gdbarch)
993 {
994   if (GDB_MULTI_ARCH == 0)
995     return TARGET_ARCHITECTURE->bits_per_address;
996   /* Skip verify of bfd_vma_bit, invalid_p == 0 */
997   if (gdbarch_debug >= 2)
998     fprintf_unfiltered (gdb_stdlog, "gdbarch_bfd_vma_bit called\n");
999   return gdbarch->bfd_vma_bit;
1000 }
1001
1002 void
1003 set_gdbarch_bfd_vma_bit (struct gdbarch *gdbarch,
1004                          int bfd_vma_bit)
1005 {
1006   gdbarch->bfd_vma_bit = bfd_vma_bit;
1007 }
1008
1009 int
1010 gdbarch_ptr_bit (struct gdbarch *gdbarch)
1011 {
1012   if (gdbarch->ptr_bit == 0)
1013     internal_error ("gdbarch: gdbarch_ptr_bit invalid");
1014   if (gdbarch_debug >= 2)
1015     fprintf_unfiltered (gdb_stdlog, "gdbarch_ptr_bit called\n");
1016   return gdbarch->ptr_bit;
1017 }
1018
1019 void
1020 set_gdbarch_ptr_bit (struct gdbarch *gdbarch,
1021                      int ptr_bit)
1022 {
1023   gdbarch->ptr_bit = ptr_bit;
1024 }
1025
1026 int
1027 gdbarch_short_bit (struct gdbarch *gdbarch)
1028 {
1029   if (gdbarch->short_bit == 0)
1030     internal_error ("gdbarch: gdbarch_short_bit invalid");
1031   if (gdbarch_debug >= 2)
1032     fprintf_unfiltered (gdb_stdlog, "gdbarch_short_bit called\n");
1033   return gdbarch->short_bit;
1034 }
1035
1036 void
1037 set_gdbarch_short_bit (struct gdbarch *gdbarch,
1038                        int short_bit)
1039 {
1040   gdbarch->short_bit = short_bit;
1041 }
1042
1043 int
1044 gdbarch_int_bit (struct gdbarch *gdbarch)
1045 {
1046   if (gdbarch->int_bit == 0)
1047     internal_error ("gdbarch: gdbarch_int_bit invalid");
1048   if (gdbarch_debug >= 2)
1049     fprintf_unfiltered (gdb_stdlog, "gdbarch_int_bit called\n");
1050   return gdbarch->int_bit;
1051 }
1052
1053 void
1054 set_gdbarch_int_bit (struct gdbarch *gdbarch,
1055                      int int_bit)
1056 {
1057   gdbarch->int_bit = int_bit;
1058 }
1059
1060 int
1061 gdbarch_long_bit (struct gdbarch *gdbarch)
1062 {
1063   if (gdbarch->long_bit == 0)
1064     internal_error ("gdbarch: gdbarch_long_bit invalid");
1065   if (gdbarch_debug >= 2)
1066     fprintf_unfiltered (gdb_stdlog, "gdbarch_long_bit called\n");
1067   return gdbarch->long_bit;
1068 }
1069
1070 void
1071 set_gdbarch_long_bit (struct gdbarch *gdbarch,
1072                       int long_bit)
1073 {
1074   gdbarch->long_bit = long_bit;
1075 }
1076
1077 int
1078 gdbarch_long_long_bit (struct gdbarch *gdbarch)
1079 {
1080   if (gdbarch->long_long_bit == 0)
1081     internal_error ("gdbarch: gdbarch_long_long_bit invalid");
1082   if (gdbarch_debug >= 2)
1083     fprintf_unfiltered (gdb_stdlog, "gdbarch_long_long_bit called\n");
1084   return gdbarch->long_long_bit;
1085 }
1086
1087 void
1088 set_gdbarch_long_long_bit (struct gdbarch *gdbarch,
1089                            int long_long_bit)
1090 {
1091   gdbarch->long_long_bit = long_long_bit;
1092 }
1093
1094 int
1095 gdbarch_float_bit (struct gdbarch *gdbarch)
1096 {
1097   if (gdbarch->float_bit == 0)
1098     internal_error ("gdbarch: gdbarch_float_bit invalid");
1099   if (gdbarch_debug >= 2)
1100     fprintf_unfiltered (gdb_stdlog, "gdbarch_float_bit called\n");
1101   return gdbarch->float_bit;
1102 }
1103
1104 void
1105 set_gdbarch_float_bit (struct gdbarch *gdbarch,
1106                        int float_bit)
1107 {
1108   gdbarch->float_bit = float_bit;
1109 }
1110
1111 int
1112 gdbarch_double_bit (struct gdbarch *gdbarch)
1113 {
1114   if (gdbarch->double_bit == 0)
1115     internal_error ("gdbarch: gdbarch_double_bit invalid");
1116   if (gdbarch_debug >= 2)
1117     fprintf_unfiltered (gdb_stdlog, "gdbarch_double_bit called\n");
1118   return gdbarch->double_bit;
1119 }
1120
1121 void
1122 set_gdbarch_double_bit (struct gdbarch *gdbarch,
1123                         int double_bit)
1124 {
1125   gdbarch->double_bit = double_bit;
1126 }
1127
1128 int
1129 gdbarch_long_double_bit (struct gdbarch *gdbarch)
1130 {
1131   if (gdbarch->long_double_bit == 0)
1132     internal_error ("gdbarch: gdbarch_long_double_bit invalid");
1133   if (gdbarch_debug >= 2)
1134     fprintf_unfiltered (gdb_stdlog, "gdbarch_long_double_bit called\n");
1135   return gdbarch->long_double_bit;
1136 }
1137
1138 void
1139 set_gdbarch_long_double_bit (struct gdbarch *gdbarch,
1140                              int long_double_bit)
1141 {
1142   gdbarch->long_double_bit = long_double_bit;
1143 }
1144
1145 int
1146 gdbarch_ieee_float (struct gdbarch *gdbarch)
1147 {
1148   /* Skip verify of ieee_float, invalid_p == 0 */
1149   if (gdbarch_debug >= 2)
1150     fprintf_unfiltered (gdb_stdlog, "gdbarch_ieee_float called\n");
1151   return gdbarch->ieee_float;
1152 }
1153
1154 void
1155 set_gdbarch_ieee_float (struct gdbarch *gdbarch,
1156                         int ieee_float)
1157 {
1158   gdbarch->ieee_float = ieee_float;
1159 }
1160
1161 CORE_ADDR
1162 gdbarch_read_pc (struct gdbarch *gdbarch, int pid)
1163 {
1164   if (gdbarch->read_pc == 0)
1165     internal_error ("gdbarch: gdbarch_read_pc invalid");
1166   if (gdbarch_debug >= 2)
1167     fprintf_unfiltered (gdb_stdlog, "gdbarch_read_pc called\n");
1168   return gdbarch->read_pc (pid);
1169 }
1170
1171 void
1172 set_gdbarch_read_pc (struct gdbarch *gdbarch,
1173                      gdbarch_read_pc_ftype read_pc)
1174 {
1175   gdbarch->read_pc = read_pc;
1176 }
1177
1178 void
1179 gdbarch_write_pc (struct gdbarch *gdbarch, CORE_ADDR val, int pid)
1180 {
1181   if (gdbarch->write_pc == 0)
1182     internal_error ("gdbarch: gdbarch_write_pc invalid");
1183   if (gdbarch_debug >= 2)
1184     fprintf_unfiltered (gdb_stdlog, "gdbarch_write_pc called\n");
1185   gdbarch->write_pc (val, pid);
1186 }
1187
1188 void
1189 set_gdbarch_write_pc (struct gdbarch *gdbarch,
1190                       gdbarch_write_pc_ftype write_pc)
1191 {
1192   gdbarch->write_pc = write_pc;
1193 }
1194
1195 CORE_ADDR
1196 gdbarch_read_fp (struct gdbarch *gdbarch)
1197 {
1198   if (gdbarch->read_fp == 0)
1199     internal_error ("gdbarch: gdbarch_read_fp invalid");
1200   if (gdbarch_debug >= 2)
1201     fprintf_unfiltered (gdb_stdlog, "gdbarch_read_fp called\n");
1202   return gdbarch->read_fp ();
1203 }
1204
1205 void
1206 set_gdbarch_read_fp (struct gdbarch *gdbarch,
1207                      gdbarch_read_fp_ftype read_fp)
1208 {
1209   gdbarch->read_fp = read_fp;
1210 }
1211
1212 void
1213 gdbarch_write_fp (struct gdbarch *gdbarch, CORE_ADDR val)
1214 {
1215   if (gdbarch->write_fp == 0)
1216     internal_error ("gdbarch: gdbarch_write_fp invalid");
1217   if (gdbarch_debug >= 2)
1218     fprintf_unfiltered (gdb_stdlog, "gdbarch_write_fp called\n");
1219   gdbarch->write_fp (val);
1220 }
1221
1222 void
1223 set_gdbarch_write_fp (struct gdbarch *gdbarch,
1224                       gdbarch_write_fp_ftype write_fp)
1225 {
1226   gdbarch->write_fp = write_fp;
1227 }
1228
1229 CORE_ADDR
1230 gdbarch_read_sp (struct gdbarch *gdbarch)
1231 {
1232   if (gdbarch->read_sp == 0)
1233     internal_error ("gdbarch: gdbarch_read_sp invalid");
1234   if (gdbarch_debug >= 2)
1235     fprintf_unfiltered (gdb_stdlog, "gdbarch_read_sp called\n");
1236   return gdbarch->read_sp ();
1237 }
1238
1239 void
1240 set_gdbarch_read_sp (struct gdbarch *gdbarch,
1241                      gdbarch_read_sp_ftype read_sp)
1242 {
1243   gdbarch->read_sp = read_sp;
1244 }
1245
1246 void
1247 gdbarch_write_sp (struct gdbarch *gdbarch, CORE_ADDR val)
1248 {
1249   if (gdbarch->write_sp == 0)
1250     internal_error ("gdbarch: gdbarch_write_sp invalid");
1251   if (gdbarch_debug >= 2)
1252     fprintf_unfiltered (gdb_stdlog, "gdbarch_write_sp called\n");
1253   gdbarch->write_sp (val);
1254 }
1255
1256 void
1257 set_gdbarch_write_sp (struct gdbarch *gdbarch,
1258                       gdbarch_write_sp_ftype write_sp)
1259 {
1260   gdbarch->write_sp = write_sp;
1261 }
1262
1263 int
1264 gdbarch_num_regs (struct gdbarch *gdbarch)
1265 {
1266   if (gdbarch->num_regs == -1)
1267     internal_error ("gdbarch: gdbarch_num_regs invalid");
1268   if (gdbarch_debug >= 2)
1269     fprintf_unfiltered (gdb_stdlog, "gdbarch_num_regs called\n");
1270   return gdbarch->num_regs;
1271 }
1272
1273 void
1274 set_gdbarch_num_regs (struct gdbarch *gdbarch,
1275                       int num_regs)
1276 {
1277   gdbarch->num_regs = num_regs;
1278 }
1279
1280 int
1281 gdbarch_sp_regnum (struct gdbarch *gdbarch)
1282 {
1283   if (gdbarch->sp_regnum == -1)
1284     internal_error ("gdbarch: gdbarch_sp_regnum invalid");
1285   if (gdbarch_debug >= 2)
1286     fprintf_unfiltered (gdb_stdlog, "gdbarch_sp_regnum called\n");
1287   return gdbarch->sp_regnum;
1288 }
1289
1290 void
1291 set_gdbarch_sp_regnum (struct gdbarch *gdbarch,
1292                        int sp_regnum)
1293 {
1294   gdbarch->sp_regnum = sp_regnum;
1295 }
1296
1297 int
1298 gdbarch_fp_regnum (struct gdbarch *gdbarch)
1299 {
1300   if (gdbarch->fp_regnum == -1)
1301     internal_error ("gdbarch: gdbarch_fp_regnum invalid");
1302   if (gdbarch_debug >= 2)
1303     fprintf_unfiltered (gdb_stdlog, "gdbarch_fp_regnum called\n");
1304   return gdbarch->fp_regnum;
1305 }
1306
1307 void
1308 set_gdbarch_fp_regnum (struct gdbarch *gdbarch,
1309                        int fp_regnum)
1310 {
1311   gdbarch->fp_regnum = fp_regnum;
1312 }
1313
1314 int
1315 gdbarch_pc_regnum (struct gdbarch *gdbarch)
1316 {
1317   if (gdbarch->pc_regnum == -1)
1318     internal_error ("gdbarch: gdbarch_pc_regnum invalid");
1319   if (gdbarch_debug >= 2)
1320     fprintf_unfiltered (gdb_stdlog, "gdbarch_pc_regnum called\n");
1321   return gdbarch->pc_regnum;
1322 }
1323
1324 void
1325 set_gdbarch_pc_regnum (struct gdbarch *gdbarch,
1326                        int pc_regnum)
1327 {
1328   gdbarch->pc_regnum = pc_regnum;
1329 }
1330
1331 char *
1332 gdbarch_register_name (struct gdbarch *gdbarch, int regnr)
1333 {
1334   if (GDB_MULTI_ARCH == 0)
1335     return legacy_register_name (regnr);
1336   if (gdbarch->register_name == 0)
1337     internal_error ("gdbarch: gdbarch_register_name invalid");
1338   if (gdbarch_debug >= 2)
1339     fprintf_unfiltered (gdb_stdlog, "gdbarch_register_name called\n");
1340   return gdbarch->register_name (regnr);
1341 }
1342
1343 void
1344 set_gdbarch_register_name (struct gdbarch *gdbarch,
1345                            gdbarch_register_name_ftype register_name)
1346 {
1347   gdbarch->register_name = register_name;
1348 }
1349
1350 int
1351 gdbarch_register_size (struct gdbarch *gdbarch)
1352 {
1353   if (gdbarch->register_size == -1)
1354     internal_error ("gdbarch: gdbarch_register_size invalid");
1355   if (gdbarch_debug >= 2)
1356     fprintf_unfiltered (gdb_stdlog, "gdbarch_register_size called\n");
1357   return gdbarch->register_size;
1358 }
1359
1360 void
1361 set_gdbarch_register_size (struct gdbarch *gdbarch,
1362                            int register_size)
1363 {
1364   gdbarch->register_size = register_size;
1365 }
1366
1367 int
1368 gdbarch_register_bytes (struct gdbarch *gdbarch)
1369 {
1370   if (gdbarch->register_bytes == -1)
1371     internal_error ("gdbarch: gdbarch_register_bytes invalid");
1372   if (gdbarch_debug >= 2)
1373     fprintf_unfiltered (gdb_stdlog, "gdbarch_register_bytes called\n");
1374   return gdbarch->register_bytes;
1375 }
1376
1377 void
1378 set_gdbarch_register_bytes (struct gdbarch *gdbarch,
1379                             int register_bytes)
1380 {
1381   gdbarch->register_bytes = register_bytes;
1382 }
1383
1384 int
1385 gdbarch_register_byte (struct gdbarch *gdbarch, int reg_nr)
1386 {
1387   if (gdbarch->register_byte == 0)
1388     internal_error ("gdbarch: gdbarch_register_byte invalid");
1389   if (gdbarch_debug >= 2)
1390     fprintf_unfiltered (gdb_stdlog, "gdbarch_register_byte called\n");
1391   return gdbarch->register_byte (reg_nr);
1392 }
1393
1394 void
1395 set_gdbarch_register_byte (struct gdbarch *gdbarch,
1396                            gdbarch_register_byte_ftype register_byte)
1397 {
1398   gdbarch->register_byte = register_byte;
1399 }
1400
1401 int
1402 gdbarch_register_raw_size (struct gdbarch *gdbarch, int reg_nr)
1403 {
1404   if (gdbarch->register_raw_size == 0)
1405     internal_error ("gdbarch: gdbarch_register_raw_size invalid");
1406   if (gdbarch_debug >= 2)
1407     fprintf_unfiltered (gdb_stdlog, "gdbarch_register_raw_size called\n");
1408   return gdbarch->register_raw_size (reg_nr);
1409 }
1410
1411 void
1412 set_gdbarch_register_raw_size (struct gdbarch *gdbarch,
1413                                gdbarch_register_raw_size_ftype register_raw_size)
1414 {
1415   gdbarch->register_raw_size = register_raw_size;
1416 }
1417
1418 int
1419 gdbarch_max_register_raw_size (struct gdbarch *gdbarch)
1420 {
1421   if (gdbarch->max_register_raw_size == -1)
1422     internal_error ("gdbarch: gdbarch_max_register_raw_size invalid");
1423   if (gdbarch_debug >= 2)
1424     fprintf_unfiltered (gdb_stdlog, "gdbarch_max_register_raw_size called\n");
1425   return gdbarch->max_register_raw_size;
1426 }
1427
1428 void
1429 set_gdbarch_max_register_raw_size (struct gdbarch *gdbarch,
1430                                    int max_register_raw_size)
1431 {
1432   gdbarch->max_register_raw_size = max_register_raw_size;
1433 }
1434
1435 int
1436 gdbarch_register_virtual_size (struct gdbarch *gdbarch, int reg_nr)
1437 {
1438   if (gdbarch->register_virtual_size == 0)
1439     internal_error ("gdbarch: gdbarch_register_virtual_size invalid");
1440   if (gdbarch_debug >= 2)
1441     fprintf_unfiltered (gdb_stdlog, "gdbarch_register_virtual_size called\n");
1442   return gdbarch->register_virtual_size (reg_nr);
1443 }
1444
1445 void
1446 set_gdbarch_register_virtual_size (struct gdbarch *gdbarch,
1447                                    gdbarch_register_virtual_size_ftype register_virtual_size)
1448 {
1449   gdbarch->register_virtual_size = register_virtual_size;
1450 }
1451
1452 int
1453 gdbarch_max_register_virtual_size (struct gdbarch *gdbarch)
1454 {
1455   if (gdbarch->max_register_virtual_size == -1)
1456     internal_error ("gdbarch: gdbarch_max_register_virtual_size invalid");
1457   if (gdbarch_debug >= 2)
1458     fprintf_unfiltered (gdb_stdlog, "gdbarch_max_register_virtual_size called\n");
1459   return gdbarch->max_register_virtual_size;
1460 }
1461
1462 void
1463 set_gdbarch_max_register_virtual_size (struct gdbarch *gdbarch,
1464                                        int max_register_virtual_size)
1465 {
1466   gdbarch->max_register_virtual_size = max_register_virtual_size;
1467 }
1468
1469 struct type *
1470 gdbarch_register_virtual_type (struct gdbarch *gdbarch, int reg_nr)
1471 {
1472   if (gdbarch->register_virtual_type == 0)
1473     internal_error ("gdbarch: gdbarch_register_virtual_type invalid");
1474   if (gdbarch_debug >= 2)
1475     fprintf_unfiltered (gdb_stdlog, "gdbarch_register_virtual_type called\n");
1476   return gdbarch->register_virtual_type (reg_nr);
1477 }
1478
1479 void
1480 set_gdbarch_register_virtual_type (struct gdbarch *gdbarch,
1481                                    gdbarch_register_virtual_type_ftype register_virtual_type)
1482 {
1483   gdbarch->register_virtual_type = register_virtual_type;
1484 }
1485
1486 int
1487 gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch)
1488 {
1489   if (gdbarch->use_generic_dummy_frames == -1)
1490     internal_error ("gdbarch: gdbarch_use_generic_dummy_frames invalid");
1491   if (gdbarch_debug >= 2)
1492     fprintf_unfiltered (gdb_stdlog, "gdbarch_use_generic_dummy_frames called\n");
1493   return gdbarch->use_generic_dummy_frames;
1494 }
1495
1496 void
1497 set_gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch,
1498                                       int use_generic_dummy_frames)
1499 {
1500   gdbarch->use_generic_dummy_frames = use_generic_dummy_frames;
1501 }
1502
1503 int
1504 gdbarch_call_dummy_location (struct gdbarch *gdbarch)
1505 {
1506   if (gdbarch->call_dummy_location == 0)
1507     internal_error ("gdbarch: gdbarch_call_dummy_location invalid");
1508   if (gdbarch_debug >= 2)
1509     fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_location called\n");
1510   return gdbarch->call_dummy_location;
1511 }
1512
1513 void
1514 set_gdbarch_call_dummy_location (struct gdbarch *gdbarch,
1515                                  int call_dummy_location)
1516 {
1517   gdbarch->call_dummy_location = call_dummy_location;
1518 }
1519
1520 CORE_ADDR
1521 gdbarch_call_dummy_address (struct gdbarch *gdbarch)
1522 {
1523   if (gdbarch->call_dummy_address == 0)
1524     internal_error ("gdbarch: gdbarch_call_dummy_address invalid");
1525   if (gdbarch_debug >= 2)
1526     fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_address called\n");
1527   return gdbarch->call_dummy_address ();
1528 }
1529
1530 void
1531 set_gdbarch_call_dummy_address (struct gdbarch *gdbarch,
1532                                 gdbarch_call_dummy_address_ftype call_dummy_address)
1533 {
1534   gdbarch->call_dummy_address = call_dummy_address;
1535 }
1536
1537 CORE_ADDR
1538 gdbarch_call_dummy_start_offset (struct gdbarch *gdbarch)
1539 {
1540   if (gdbarch->call_dummy_start_offset == -1)
1541     internal_error ("gdbarch: gdbarch_call_dummy_start_offset invalid");
1542   if (gdbarch_debug >= 2)
1543     fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_start_offset called\n");
1544   return gdbarch->call_dummy_start_offset;
1545 }
1546
1547 void
1548 set_gdbarch_call_dummy_start_offset (struct gdbarch *gdbarch,
1549                                      CORE_ADDR call_dummy_start_offset)
1550 {
1551   gdbarch->call_dummy_start_offset = call_dummy_start_offset;
1552 }
1553
1554 CORE_ADDR
1555 gdbarch_call_dummy_breakpoint_offset (struct gdbarch *gdbarch)
1556 {
1557   if (gdbarch->call_dummy_breakpoint_offset == -1)
1558     internal_error ("gdbarch: gdbarch_call_dummy_breakpoint_offset invalid");
1559   if (gdbarch_debug >= 2)
1560     fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_breakpoint_offset called\n");
1561   return gdbarch->call_dummy_breakpoint_offset;
1562 }
1563
1564 void
1565 set_gdbarch_call_dummy_breakpoint_offset (struct gdbarch *gdbarch,
1566                                           CORE_ADDR call_dummy_breakpoint_offset)
1567 {
1568   gdbarch->call_dummy_breakpoint_offset = call_dummy_breakpoint_offset;
1569 }
1570
1571 int
1572 gdbarch_call_dummy_breakpoint_offset_p (struct gdbarch *gdbarch)
1573 {
1574   if (gdbarch->call_dummy_breakpoint_offset_p == -1)
1575     internal_error ("gdbarch: gdbarch_call_dummy_breakpoint_offset_p invalid");
1576   if (gdbarch_debug >= 2)
1577     fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_breakpoint_offset_p called\n");
1578   return gdbarch->call_dummy_breakpoint_offset_p;
1579 }
1580
1581 void
1582 set_gdbarch_call_dummy_breakpoint_offset_p (struct gdbarch *gdbarch,
1583                                             int call_dummy_breakpoint_offset_p)
1584 {
1585   gdbarch->call_dummy_breakpoint_offset_p = call_dummy_breakpoint_offset_p;
1586 }
1587
1588 int
1589 gdbarch_call_dummy_length (struct gdbarch *gdbarch)
1590 {
1591   if (gdbarch->call_dummy_length == -1)
1592     internal_error ("gdbarch: gdbarch_call_dummy_length invalid");
1593   if (gdbarch_debug >= 2)
1594     fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_length called\n");
1595   return gdbarch->call_dummy_length;
1596 }
1597
1598 void
1599 set_gdbarch_call_dummy_length (struct gdbarch *gdbarch,
1600                                int call_dummy_length)
1601 {
1602   gdbarch->call_dummy_length = call_dummy_length;
1603 }
1604
1605 int
1606 gdbarch_pc_in_call_dummy (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address)
1607 {
1608   if (gdbarch->pc_in_call_dummy == 0)
1609     internal_error ("gdbarch: gdbarch_pc_in_call_dummy invalid");
1610   if (gdbarch_debug >= 2)
1611     fprintf_unfiltered (gdb_stdlog, "gdbarch_pc_in_call_dummy called\n");
1612   return gdbarch->pc_in_call_dummy (pc, sp, frame_address);
1613 }
1614
1615 void
1616 set_gdbarch_pc_in_call_dummy (struct gdbarch *gdbarch,
1617                               gdbarch_pc_in_call_dummy_ftype pc_in_call_dummy)
1618 {
1619   gdbarch->pc_in_call_dummy = pc_in_call_dummy;
1620 }
1621
1622 int
1623 gdbarch_call_dummy_p (struct gdbarch *gdbarch)
1624 {
1625   if (gdbarch->call_dummy_p == -1)
1626     internal_error ("gdbarch: gdbarch_call_dummy_p invalid");
1627   if (gdbarch_debug >= 2)
1628     fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_p called\n");
1629   return gdbarch->call_dummy_p;
1630 }
1631
1632 void
1633 set_gdbarch_call_dummy_p (struct gdbarch *gdbarch,
1634                           int call_dummy_p)
1635 {
1636   gdbarch->call_dummy_p = call_dummy_p;
1637 }
1638
1639 LONGEST *
1640 gdbarch_call_dummy_words (struct gdbarch *gdbarch)
1641 {
1642   if (GDB_MULTI_ARCH == 0)
1643     return legacy_call_dummy_words;
1644   /* Skip verify of call_dummy_words, invalid_p == 0 */
1645   if (gdbarch_debug >= 2)
1646     fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_words called\n");
1647   return gdbarch->call_dummy_words;
1648 }
1649
1650 void
1651 set_gdbarch_call_dummy_words (struct gdbarch *gdbarch,
1652                               LONGEST * call_dummy_words)
1653 {
1654   gdbarch->call_dummy_words = call_dummy_words;
1655 }
1656
1657 int
1658 gdbarch_sizeof_call_dummy_words (struct gdbarch *gdbarch)
1659 {
1660   if (GDB_MULTI_ARCH == 0)
1661     return legacy_sizeof_call_dummy_words;
1662   /* Skip verify of sizeof_call_dummy_words, invalid_p == 0 */
1663   if (gdbarch_debug >= 2)
1664     fprintf_unfiltered (gdb_stdlog, "gdbarch_sizeof_call_dummy_words called\n");
1665   return gdbarch->sizeof_call_dummy_words;
1666 }
1667
1668 void
1669 set_gdbarch_sizeof_call_dummy_words (struct gdbarch *gdbarch,
1670                                      int sizeof_call_dummy_words)
1671 {
1672   gdbarch->sizeof_call_dummy_words = sizeof_call_dummy_words;
1673 }
1674
1675 int
1676 gdbarch_call_dummy_stack_adjust_p (struct gdbarch *gdbarch)
1677 {
1678   if (gdbarch->call_dummy_stack_adjust_p == -1)
1679     internal_error ("gdbarch: gdbarch_call_dummy_stack_adjust_p invalid");
1680   if (gdbarch_debug >= 2)
1681     fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_stack_adjust_p called\n");
1682   return gdbarch->call_dummy_stack_adjust_p;
1683 }
1684
1685 void
1686 set_gdbarch_call_dummy_stack_adjust_p (struct gdbarch *gdbarch,
1687                                        int call_dummy_stack_adjust_p)
1688 {
1689   gdbarch->call_dummy_stack_adjust_p = call_dummy_stack_adjust_p;
1690 }
1691
1692 int
1693 gdbarch_call_dummy_stack_adjust (struct gdbarch *gdbarch)
1694 {
1695   if (gdbarch->call_dummy_stack_adjust_p && gdbarch->call_dummy_stack_adjust == 0)
1696     internal_error ("gdbarch: gdbarch_call_dummy_stack_adjust invalid");
1697   if (gdbarch_debug >= 2)
1698     fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_stack_adjust called\n");
1699   return gdbarch->call_dummy_stack_adjust;
1700 }
1701
1702 void
1703 set_gdbarch_call_dummy_stack_adjust (struct gdbarch *gdbarch,
1704                                      int call_dummy_stack_adjust)
1705 {
1706   gdbarch->call_dummy_stack_adjust = call_dummy_stack_adjust;
1707 }
1708
1709 void
1710 gdbarch_fix_call_dummy (struct gdbarch *gdbarch, char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs, struct value **args, struct type *type, int gcc_p)
1711 {
1712   if (gdbarch->fix_call_dummy == 0)
1713     internal_error ("gdbarch: gdbarch_fix_call_dummy invalid");
1714   if (gdbarch_debug >= 2)
1715     fprintf_unfiltered (gdb_stdlog, "gdbarch_fix_call_dummy called\n");
1716   gdbarch->fix_call_dummy (dummy, pc, fun, nargs, args, type, gcc_p);
1717 }
1718
1719 void
1720 set_gdbarch_fix_call_dummy (struct gdbarch *gdbarch,
1721                             gdbarch_fix_call_dummy_ftype fix_call_dummy)
1722 {
1723   gdbarch->fix_call_dummy = fix_call_dummy;
1724 }
1725
1726 int
1727 gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch)
1728 {
1729   if (gdbarch_debug >= 2)
1730     fprintf_unfiltered (gdb_stdlog, "gdbarch_believe_pcc_promotion called\n");
1731   return gdbarch->believe_pcc_promotion;
1732 }
1733
1734 void
1735 set_gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch,
1736                                    int believe_pcc_promotion)
1737 {
1738   gdbarch->believe_pcc_promotion = believe_pcc_promotion;
1739 }
1740
1741 int
1742 gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch)
1743 {
1744   if (gdbarch_debug >= 2)
1745     fprintf_unfiltered (gdb_stdlog, "gdbarch_believe_pcc_promotion_type called\n");
1746   return gdbarch->believe_pcc_promotion_type;
1747 }
1748
1749 void
1750 set_gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch,
1751                                         int believe_pcc_promotion_type)
1752 {
1753   gdbarch->believe_pcc_promotion_type = believe_pcc_promotion_type;
1754 }
1755
1756 int
1757 gdbarch_coerce_float_to_double (struct gdbarch *gdbarch, struct type *formal, struct type *actual)
1758 {
1759   if (GDB_MULTI_ARCH == 0)
1760     return default_coerce_float_to_double (formal, actual);
1761   if (gdbarch->coerce_float_to_double == 0)
1762     internal_error ("gdbarch: gdbarch_coerce_float_to_double invalid");
1763   if (gdbarch_debug >= 2)
1764     fprintf_unfiltered (gdb_stdlog, "gdbarch_coerce_float_to_double called\n");
1765   return gdbarch->coerce_float_to_double (formal, actual);
1766 }
1767
1768 void
1769 set_gdbarch_coerce_float_to_double (struct gdbarch *gdbarch,
1770                                     gdbarch_coerce_float_to_double_ftype coerce_float_to_double)
1771 {
1772   gdbarch->coerce_float_to_double = coerce_float_to_double;
1773 }
1774
1775 void
1776 gdbarch_get_saved_register (struct gdbarch *gdbarch, char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval)
1777 {
1778   if (gdbarch->get_saved_register == 0)
1779     internal_error ("gdbarch: gdbarch_get_saved_register invalid");
1780   if (gdbarch_debug >= 2)
1781     fprintf_unfiltered (gdb_stdlog, "gdbarch_get_saved_register called\n");
1782   gdbarch->get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval);
1783 }
1784
1785 void
1786 set_gdbarch_get_saved_register (struct gdbarch *gdbarch,
1787                                 gdbarch_get_saved_register_ftype get_saved_register)
1788 {
1789   gdbarch->get_saved_register = get_saved_register;
1790 }
1791
1792 int
1793 gdbarch_register_convertible (struct gdbarch *gdbarch, int nr)
1794 {
1795   if (GDB_MULTI_ARCH == 0)
1796     return generic_register_convertible_not (nr);
1797   if (gdbarch->register_convertible == 0)
1798     internal_error ("gdbarch: gdbarch_register_convertible invalid");
1799   if (gdbarch_debug >= 2)
1800     fprintf_unfiltered (gdb_stdlog, "gdbarch_register_convertible called\n");
1801   return gdbarch->register_convertible (nr);
1802 }
1803
1804 void
1805 set_gdbarch_register_convertible (struct gdbarch *gdbarch,
1806                                   gdbarch_register_convertible_ftype register_convertible)
1807 {
1808   gdbarch->register_convertible = register_convertible;
1809 }
1810
1811 void
1812 gdbarch_register_convert_to_virtual (struct gdbarch *gdbarch, int regnum, struct type *type, char *from, char *to)
1813 {
1814   if (gdbarch->register_convert_to_virtual == 0)
1815     internal_error ("gdbarch: gdbarch_register_convert_to_virtual invalid");
1816   if (gdbarch_debug >= 2)
1817     fprintf_unfiltered (gdb_stdlog, "gdbarch_register_convert_to_virtual called\n");
1818   gdbarch->register_convert_to_virtual (regnum, type, from, to);
1819 }
1820
1821 void
1822 set_gdbarch_register_convert_to_virtual (struct gdbarch *gdbarch,
1823                                          gdbarch_register_convert_to_virtual_ftype register_convert_to_virtual)
1824 {
1825   gdbarch->register_convert_to_virtual = register_convert_to_virtual;
1826 }
1827
1828 void
1829 gdbarch_register_convert_to_raw (struct gdbarch *gdbarch, struct type *type, int regnum, char *from, char *to)
1830 {
1831   if (gdbarch->register_convert_to_raw == 0)
1832     internal_error ("gdbarch: gdbarch_register_convert_to_raw invalid");
1833   if (gdbarch_debug >= 2)
1834     fprintf_unfiltered (gdb_stdlog, "gdbarch_register_convert_to_raw called\n");
1835   gdbarch->register_convert_to_raw (type, regnum, from, to);
1836 }
1837
1838 void
1839 set_gdbarch_register_convert_to_raw (struct gdbarch *gdbarch,
1840                                      gdbarch_register_convert_to_raw_ftype register_convert_to_raw)
1841 {
1842   gdbarch->register_convert_to_raw = register_convert_to_raw;
1843 }
1844
1845 CORE_ADDR
1846 gdbarch_pointer_to_address (struct gdbarch *gdbarch, struct type *type, char *buf)
1847 {
1848   if (GDB_MULTI_ARCH == 0)
1849     return generic_pointer_to_address (type, buf);
1850   if (gdbarch->pointer_to_address == 0)
1851     internal_error ("gdbarch: gdbarch_pointer_to_address invalid");
1852   if (gdbarch_debug >= 2)
1853     fprintf_unfiltered (gdb_stdlog, "gdbarch_pointer_to_address called\n");
1854   return gdbarch->pointer_to_address (type, buf);
1855 }
1856
1857 void
1858 set_gdbarch_pointer_to_address (struct gdbarch *gdbarch,
1859                                 gdbarch_pointer_to_address_ftype pointer_to_address)
1860 {
1861   gdbarch->pointer_to_address = pointer_to_address;
1862 }
1863
1864 void
1865 gdbarch_address_to_pointer (struct gdbarch *gdbarch, struct type *type, char *buf, CORE_ADDR addr)
1866 {
1867   if (GDB_MULTI_ARCH == 0)
1868     {
1869       generic_address_to_pointer (type, buf, addr);
1870       return;
1871     }
1872   if (gdbarch->address_to_pointer == 0)
1873     internal_error ("gdbarch: gdbarch_address_to_pointer invalid");
1874   if (gdbarch_debug >= 2)
1875     fprintf_unfiltered (gdb_stdlog, "gdbarch_address_to_pointer called\n");
1876   gdbarch->address_to_pointer (type, buf, addr);
1877 }
1878
1879 void
1880 set_gdbarch_address_to_pointer (struct gdbarch *gdbarch,
1881                                 gdbarch_address_to_pointer_ftype address_to_pointer)
1882 {
1883   gdbarch->address_to_pointer = address_to_pointer;
1884 }
1885
1886 int
1887 gdbarch_return_value_on_stack (struct gdbarch *gdbarch, struct type *type)
1888 {
1889   if (GDB_MULTI_ARCH == 0)
1890     return generic_return_value_on_stack_not (type);
1891   if (gdbarch->return_value_on_stack == 0)
1892     internal_error ("gdbarch: gdbarch_return_value_on_stack invalid");
1893   if (gdbarch_debug >= 2)
1894     fprintf_unfiltered (gdb_stdlog, "gdbarch_return_value_on_stack called\n");
1895   return gdbarch->return_value_on_stack (type);
1896 }
1897
1898 void
1899 set_gdbarch_return_value_on_stack (struct gdbarch *gdbarch,
1900                                    gdbarch_return_value_on_stack_ftype return_value_on_stack)
1901 {
1902   gdbarch->return_value_on_stack = return_value_on_stack;
1903 }
1904
1905 void
1906 gdbarch_extract_return_value (struct gdbarch *gdbarch, struct type *type, char *regbuf, char *valbuf)
1907 {
1908   if (gdbarch->extract_return_value == 0)
1909     internal_error ("gdbarch: gdbarch_extract_return_value invalid");
1910   if (gdbarch_debug >= 2)
1911     fprintf_unfiltered (gdb_stdlog, "gdbarch_extract_return_value called\n");
1912   gdbarch->extract_return_value (type, regbuf, valbuf);
1913 }
1914
1915 void
1916 set_gdbarch_extract_return_value (struct gdbarch *gdbarch,
1917                                   gdbarch_extract_return_value_ftype extract_return_value)
1918 {
1919   gdbarch->extract_return_value = extract_return_value;
1920 }
1921
1922 CORE_ADDR
1923 gdbarch_push_arguments (struct gdbarch *gdbarch, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr)
1924 {
1925   if (gdbarch->push_arguments == 0)
1926     internal_error ("gdbarch: gdbarch_push_arguments invalid");
1927   if (gdbarch_debug >= 2)
1928     fprintf_unfiltered (gdb_stdlog, "gdbarch_push_arguments called\n");
1929   return gdbarch->push_arguments (nargs, args, sp, struct_return, struct_addr);
1930 }
1931
1932 void
1933 set_gdbarch_push_arguments (struct gdbarch *gdbarch,
1934                             gdbarch_push_arguments_ftype push_arguments)
1935 {
1936   gdbarch->push_arguments = push_arguments;
1937 }
1938
1939 void
1940 gdbarch_push_dummy_frame (struct gdbarch *gdbarch)
1941 {
1942   if (gdbarch->push_dummy_frame == 0)
1943     internal_error ("gdbarch: gdbarch_push_dummy_frame invalid");
1944   if (gdbarch_debug >= 2)
1945     fprintf_unfiltered (gdb_stdlog, "gdbarch_push_dummy_frame called\n");
1946   gdbarch->push_dummy_frame ();
1947 }
1948
1949 void
1950 set_gdbarch_push_dummy_frame (struct gdbarch *gdbarch,
1951                               gdbarch_push_dummy_frame_ftype push_dummy_frame)
1952 {
1953   gdbarch->push_dummy_frame = push_dummy_frame;
1954 }
1955
1956 CORE_ADDR
1957 gdbarch_push_return_address (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR sp)
1958 {
1959   if (gdbarch->push_return_address == 0)
1960     internal_error ("gdbarch: gdbarch_push_return_address invalid");
1961   if (gdbarch_debug >= 2)
1962     fprintf_unfiltered (gdb_stdlog, "gdbarch_push_return_address called\n");
1963   return gdbarch->push_return_address (pc, sp);
1964 }
1965
1966 void
1967 set_gdbarch_push_return_address (struct gdbarch *gdbarch,
1968                                  gdbarch_push_return_address_ftype push_return_address)
1969 {
1970   gdbarch->push_return_address = push_return_address;
1971 }
1972
1973 void
1974 gdbarch_pop_frame (struct gdbarch *gdbarch)
1975 {
1976   if (gdbarch->pop_frame == 0)
1977     internal_error ("gdbarch: gdbarch_pop_frame invalid");
1978   if (gdbarch_debug >= 2)
1979     fprintf_unfiltered (gdb_stdlog, "gdbarch_pop_frame called\n");
1980   gdbarch->pop_frame ();
1981 }
1982
1983 void
1984 set_gdbarch_pop_frame (struct gdbarch *gdbarch,
1985                        gdbarch_pop_frame_ftype pop_frame)
1986 {
1987   gdbarch->pop_frame = pop_frame;
1988 }
1989
1990 CORE_ADDR
1991 gdbarch_d10v_make_daddr (struct gdbarch *gdbarch, CORE_ADDR x)
1992 {
1993   if (gdbarch->d10v_make_daddr == 0)
1994     internal_error ("gdbarch: gdbarch_d10v_make_daddr invalid");
1995   if (gdbarch_debug >= 2)
1996     fprintf_unfiltered (gdb_stdlog, "gdbarch_d10v_make_daddr called\n");
1997   return gdbarch->d10v_make_daddr (x);
1998 }
1999
2000 void
2001 set_gdbarch_d10v_make_daddr (struct gdbarch *gdbarch,
2002                              gdbarch_d10v_make_daddr_ftype d10v_make_daddr)
2003 {
2004   gdbarch->d10v_make_daddr = d10v_make_daddr;
2005 }
2006
2007 CORE_ADDR
2008 gdbarch_d10v_make_iaddr (struct gdbarch *gdbarch, CORE_ADDR x)
2009 {
2010   if (gdbarch->d10v_make_iaddr == 0)
2011     internal_error ("gdbarch: gdbarch_d10v_make_iaddr invalid");
2012   if (gdbarch_debug >= 2)
2013     fprintf_unfiltered (gdb_stdlog, "gdbarch_d10v_make_iaddr called\n");
2014   return gdbarch->d10v_make_iaddr (x);
2015 }
2016
2017 void
2018 set_gdbarch_d10v_make_iaddr (struct gdbarch *gdbarch,
2019                              gdbarch_d10v_make_iaddr_ftype d10v_make_iaddr)
2020 {
2021   gdbarch->d10v_make_iaddr = d10v_make_iaddr;
2022 }
2023
2024 int
2025 gdbarch_d10v_daddr_p (struct gdbarch *gdbarch, CORE_ADDR x)
2026 {
2027   if (gdbarch->d10v_daddr_p == 0)
2028     internal_error ("gdbarch: gdbarch_d10v_daddr_p invalid");
2029   if (gdbarch_debug >= 2)
2030     fprintf_unfiltered (gdb_stdlog, "gdbarch_d10v_daddr_p called\n");
2031   return gdbarch->d10v_daddr_p (x);
2032 }
2033
2034 void
2035 set_gdbarch_d10v_daddr_p (struct gdbarch *gdbarch,
2036                           gdbarch_d10v_daddr_p_ftype d10v_daddr_p)
2037 {
2038   gdbarch->d10v_daddr_p = d10v_daddr_p;
2039 }
2040
2041 int
2042 gdbarch_d10v_iaddr_p (struct gdbarch *gdbarch, CORE_ADDR x)
2043 {
2044   if (gdbarch->d10v_iaddr_p == 0)
2045     internal_error ("gdbarch: gdbarch_d10v_iaddr_p invalid");
2046   if (gdbarch_debug >= 2)
2047     fprintf_unfiltered (gdb_stdlog, "gdbarch_d10v_iaddr_p called\n");
2048   return gdbarch->d10v_iaddr_p (x);
2049 }
2050
2051 void
2052 set_gdbarch_d10v_iaddr_p (struct gdbarch *gdbarch,
2053                           gdbarch_d10v_iaddr_p_ftype d10v_iaddr_p)
2054 {
2055   gdbarch->d10v_iaddr_p = d10v_iaddr_p;
2056 }
2057
2058 CORE_ADDR
2059 gdbarch_d10v_convert_daddr_to_raw (struct gdbarch *gdbarch, CORE_ADDR x)
2060 {
2061   if (gdbarch->d10v_convert_daddr_to_raw == 0)
2062     internal_error ("gdbarch: gdbarch_d10v_convert_daddr_to_raw invalid");
2063   if (gdbarch_debug >= 2)
2064     fprintf_unfiltered (gdb_stdlog, "gdbarch_d10v_convert_daddr_to_raw called\n");
2065   return gdbarch->d10v_convert_daddr_to_raw (x);
2066 }
2067
2068 void
2069 set_gdbarch_d10v_convert_daddr_to_raw (struct gdbarch *gdbarch,
2070                                        gdbarch_d10v_convert_daddr_to_raw_ftype d10v_convert_daddr_to_raw)
2071 {
2072   gdbarch->d10v_convert_daddr_to_raw = d10v_convert_daddr_to_raw;
2073 }
2074
2075 CORE_ADDR
2076 gdbarch_d10v_convert_iaddr_to_raw (struct gdbarch *gdbarch, CORE_ADDR x)
2077 {
2078   if (gdbarch->d10v_convert_iaddr_to_raw == 0)
2079     internal_error ("gdbarch: gdbarch_d10v_convert_iaddr_to_raw invalid");
2080   if (gdbarch_debug >= 2)
2081     fprintf_unfiltered (gdb_stdlog, "gdbarch_d10v_convert_iaddr_to_raw called\n");
2082   return gdbarch->d10v_convert_iaddr_to_raw (x);
2083 }
2084
2085 void
2086 set_gdbarch_d10v_convert_iaddr_to_raw (struct gdbarch *gdbarch,
2087                                        gdbarch_d10v_convert_iaddr_to_raw_ftype d10v_convert_iaddr_to_raw)
2088 {
2089   gdbarch->d10v_convert_iaddr_to_raw = d10v_convert_iaddr_to_raw;
2090 }
2091
2092 void
2093 gdbarch_store_struct_return (struct gdbarch *gdbarch, CORE_ADDR addr, CORE_ADDR sp)
2094 {
2095   if (gdbarch->store_struct_return == 0)
2096     internal_error ("gdbarch: gdbarch_store_struct_return invalid");
2097   if (gdbarch_debug >= 2)
2098     fprintf_unfiltered (gdb_stdlog, "gdbarch_store_struct_return called\n");
2099   gdbarch->store_struct_return (addr, sp);
2100 }
2101
2102 void
2103 set_gdbarch_store_struct_return (struct gdbarch *gdbarch,
2104                                  gdbarch_store_struct_return_ftype store_struct_return)
2105 {
2106   gdbarch->store_struct_return = store_struct_return;
2107 }
2108
2109 void
2110 gdbarch_store_return_value (struct gdbarch *gdbarch, struct type *type, char *valbuf)
2111 {
2112   if (gdbarch->store_return_value == 0)
2113     internal_error ("gdbarch: gdbarch_store_return_value invalid");
2114   if (gdbarch_debug >= 2)
2115     fprintf_unfiltered (gdb_stdlog, "gdbarch_store_return_value called\n");
2116   gdbarch->store_return_value (type, valbuf);
2117 }
2118
2119 void
2120 set_gdbarch_store_return_value (struct gdbarch *gdbarch,
2121                                 gdbarch_store_return_value_ftype store_return_value)
2122 {
2123   gdbarch->store_return_value = store_return_value;
2124 }
2125
2126 CORE_ADDR
2127 gdbarch_extract_struct_value_address (struct gdbarch *gdbarch, char *regbuf)
2128 {
2129   if (gdbarch->extract_struct_value_address == 0)
2130     internal_error ("gdbarch: gdbarch_extract_struct_value_address invalid");
2131   if (gdbarch_debug >= 2)
2132     fprintf_unfiltered (gdb_stdlog, "gdbarch_extract_struct_value_address called\n");
2133   return gdbarch->extract_struct_value_address (regbuf);
2134 }
2135
2136 void
2137 set_gdbarch_extract_struct_value_address (struct gdbarch *gdbarch,
2138                                           gdbarch_extract_struct_value_address_ftype extract_struct_value_address)
2139 {
2140   gdbarch->extract_struct_value_address = extract_struct_value_address;
2141 }
2142
2143 int
2144 gdbarch_use_struct_convention (struct gdbarch *gdbarch, int gcc_p, struct type *value_type)
2145 {
2146   if (gdbarch->use_struct_convention == 0)
2147     internal_error ("gdbarch: gdbarch_use_struct_convention invalid");
2148   if (gdbarch_debug >= 2)
2149     fprintf_unfiltered (gdb_stdlog, "gdbarch_use_struct_convention called\n");
2150   return gdbarch->use_struct_convention (gcc_p, value_type);
2151 }
2152
2153 void
2154 set_gdbarch_use_struct_convention (struct gdbarch *gdbarch,
2155                                    gdbarch_use_struct_convention_ftype use_struct_convention)
2156 {
2157   gdbarch->use_struct_convention = use_struct_convention;
2158 }
2159
2160 void
2161 gdbarch_frame_init_saved_regs (struct gdbarch *gdbarch, struct frame_info *frame)
2162 {
2163   if (gdbarch->frame_init_saved_regs == 0)
2164     internal_error ("gdbarch: gdbarch_frame_init_saved_regs invalid");
2165   if (gdbarch_debug >= 2)
2166     fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_init_saved_regs called\n");
2167   gdbarch->frame_init_saved_regs (frame);
2168 }
2169
2170 void
2171 set_gdbarch_frame_init_saved_regs (struct gdbarch *gdbarch,
2172                                    gdbarch_frame_init_saved_regs_ftype frame_init_saved_regs)
2173 {
2174   gdbarch->frame_init_saved_regs = frame_init_saved_regs;
2175 }
2176
2177 void
2178 gdbarch_init_extra_frame_info (struct gdbarch *gdbarch, int fromleaf, struct frame_info *frame)
2179 {
2180   if (gdbarch->init_extra_frame_info == 0)
2181     internal_error ("gdbarch: gdbarch_init_extra_frame_info invalid");
2182   if (gdbarch_debug >= 2)
2183     fprintf_unfiltered (gdb_stdlog, "gdbarch_init_extra_frame_info called\n");
2184   gdbarch->init_extra_frame_info (fromleaf, frame);
2185 }
2186
2187 void
2188 set_gdbarch_init_extra_frame_info (struct gdbarch *gdbarch,
2189                                    gdbarch_init_extra_frame_info_ftype init_extra_frame_info)
2190 {
2191   gdbarch->init_extra_frame_info = init_extra_frame_info;
2192 }
2193
2194 CORE_ADDR
2195 gdbarch_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR ip)
2196 {
2197   if (gdbarch->skip_prologue == 0)
2198     internal_error ("gdbarch: gdbarch_skip_prologue invalid");
2199   if (gdbarch_debug >= 2)
2200     fprintf_unfiltered (gdb_stdlog, "gdbarch_skip_prologue called\n");
2201   return gdbarch->skip_prologue (ip);
2202 }
2203
2204 void
2205 set_gdbarch_skip_prologue (struct gdbarch *gdbarch,
2206                            gdbarch_skip_prologue_ftype skip_prologue)
2207 {
2208   gdbarch->skip_prologue = skip_prologue;
2209 }
2210
2211 int
2212 gdbarch_inner_than (struct gdbarch *gdbarch, CORE_ADDR lhs, CORE_ADDR rhs)
2213 {
2214   if (gdbarch->inner_than == 0)
2215     internal_error ("gdbarch: gdbarch_inner_than invalid");
2216   if (gdbarch_debug >= 2)
2217     fprintf_unfiltered (gdb_stdlog, "gdbarch_inner_than called\n");
2218   return gdbarch->inner_than (lhs, rhs);
2219 }
2220
2221 void
2222 set_gdbarch_inner_than (struct gdbarch *gdbarch,
2223                         gdbarch_inner_than_ftype inner_than)
2224 {
2225   gdbarch->inner_than = inner_than;
2226 }
2227
2228 unsigned char *
2229 gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr)
2230 {
2231   if (GDB_MULTI_ARCH == 0)
2232     return legacy_breakpoint_from_pc (pcptr, lenptr);
2233   if (gdbarch->breakpoint_from_pc == 0)
2234     internal_error ("gdbarch: gdbarch_breakpoint_from_pc invalid");
2235   if (gdbarch_debug >= 2)
2236     fprintf_unfiltered (gdb_stdlog, "gdbarch_breakpoint_from_pc called\n");
2237   return gdbarch->breakpoint_from_pc (pcptr, lenptr);
2238 }
2239
2240 void
2241 set_gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch,
2242                                 gdbarch_breakpoint_from_pc_ftype breakpoint_from_pc)
2243 {
2244   gdbarch->breakpoint_from_pc = breakpoint_from_pc;
2245 }
2246
2247 int
2248 gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache)
2249 {
2250   if (GDB_MULTI_ARCH == 0)
2251     return default_memory_insert_breakpoint (addr, contents_cache);
2252   if (gdbarch->memory_insert_breakpoint == 0)
2253     internal_error ("gdbarch: gdbarch_memory_insert_breakpoint invalid");
2254   if (gdbarch_debug >= 2)
2255     fprintf_unfiltered (gdb_stdlog, "gdbarch_memory_insert_breakpoint called\n");
2256   return gdbarch->memory_insert_breakpoint (addr, contents_cache);
2257 }
2258
2259 void
2260 set_gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch,
2261                                       gdbarch_memory_insert_breakpoint_ftype memory_insert_breakpoint)
2262 {
2263   gdbarch->memory_insert_breakpoint = memory_insert_breakpoint;
2264 }
2265
2266 int
2267 gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache)
2268 {
2269   if (GDB_MULTI_ARCH == 0)
2270     return default_memory_remove_breakpoint (addr, contents_cache);
2271   if (gdbarch->memory_remove_breakpoint == 0)
2272     internal_error ("gdbarch: gdbarch_memory_remove_breakpoint invalid");
2273   if (gdbarch_debug >= 2)
2274     fprintf_unfiltered (gdb_stdlog, "gdbarch_memory_remove_breakpoint called\n");
2275   return gdbarch->memory_remove_breakpoint (addr, contents_cache);
2276 }
2277
2278 void
2279 set_gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch,
2280                                       gdbarch_memory_remove_breakpoint_ftype memory_remove_breakpoint)
2281 {
2282   gdbarch->memory_remove_breakpoint = memory_remove_breakpoint;
2283 }
2284
2285 CORE_ADDR
2286 gdbarch_decr_pc_after_break (struct gdbarch *gdbarch)
2287 {
2288   if (gdbarch->decr_pc_after_break == -1)
2289     internal_error ("gdbarch: gdbarch_decr_pc_after_break invalid");
2290   if (gdbarch_debug >= 2)
2291     fprintf_unfiltered (gdb_stdlog, "gdbarch_decr_pc_after_break called\n");
2292   return gdbarch->decr_pc_after_break;
2293 }
2294
2295 void
2296 set_gdbarch_decr_pc_after_break (struct gdbarch *gdbarch,
2297                                  CORE_ADDR decr_pc_after_break)
2298 {
2299   gdbarch->decr_pc_after_break = decr_pc_after_break;
2300 }
2301
2302 CORE_ADDR
2303 gdbarch_function_start_offset (struct gdbarch *gdbarch)
2304 {
2305   if (gdbarch->function_start_offset == -1)
2306     internal_error ("gdbarch: gdbarch_function_start_offset invalid");
2307   if (gdbarch_debug >= 2)
2308     fprintf_unfiltered (gdb_stdlog, "gdbarch_function_start_offset called\n");
2309   return gdbarch->function_start_offset;
2310 }
2311
2312 void
2313 set_gdbarch_function_start_offset (struct gdbarch *gdbarch,
2314                                    CORE_ADDR function_start_offset)
2315 {
2316   gdbarch->function_start_offset = function_start_offset;
2317 }
2318
2319 void
2320 gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch, CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len)
2321 {
2322   if (GDB_MULTI_ARCH == 0)
2323     {
2324       generic_remote_translate_xfer_address (gdb_addr, gdb_len, rem_addr, rem_len);
2325       return;
2326     }
2327   if (gdbarch->remote_translate_xfer_address == 0)
2328     internal_error ("gdbarch: gdbarch_remote_translate_xfer_address invalid");
2329   if (gdbarch_debug >= 2)
2330     fprintf_unfiltered (gdb_stdlog, "gdbarch_remote_translate_xfer_address called\n");
2331   gdbarch->remote_translate_xfer_address (gdb_addr, gdb_len, rem_addr, rem_len);
2332 }
2333
2334 void
2335 set_gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch,
2336                                            gdbarch_remote_translate_xfer_address_ftype remote_translate_xfer_address)
2337 {
2338   gdbarch->remote_translate_xfer_address = remote_translate_xfer_address;
2339 }
2340
2341 CORE_ADDR
2342 gdbarch_frame_args_skip (struct gdbarch *gdbarch)
2343 {
2344   if (gdbarch->frame_args_skip == -1)
2345     internal_error ("gdbarch: gdbarch_frame_args_skip invalid");
2346   if (gdbarch_debug >= 2)
2347     fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_args_skip called\n");
2348   return gdbarch->frame_args_skip;
2349 }
2350
2351 void
2352 set_gdbarch_frame_args_skip (struct gdbarch *gdbarch,
2353                              CORE_ADDR frame_args_skip)
2354 {
2355   gdbarch->frame_args_skip = frame_args_skip;
2356 }
2357
2358 int
2359 gdbarch_frameless_function_invocation (struct gdbarch *gdbarch, struct frame_info *fi)
2360 {
2361   if (GDB_MULTI_ARCH == 0)
2362     return generic_frameless_function_invocation_not (fi);
2363   if (gdbarch->frameless_function_invocation == 0)
2364     internal_error ("gdbarch: gdbarch_frameless_function_invocation invalid");
2365   if (gdbarch_debug >= 2)
2366     fprintf_unfiltered (gdb_stdlog, "gdbarch_frameless_function_invocation called\n");
2367   return gdbarch->frameless_function_invocation (fi);
2368 }
2369
2370 void
2371 set_gdbarch_frameless_function_invocation (struct gdbarch *gdbarch,
2372                                            gdbarch_frameless_function_invocation_ftype frameless_function_invocation)
2373 {
2374   gdbarch->frameless_function_invocation = frameless_function_invocation;
2375 }
2376
2377 CORE_ADDR
2378 gdbarch_frame_chain (struct gdbarch *gdbarch, struct frame_info *frame)
2379 {
2380   if (gdbarch->frame_chain == 0)
2381     internal_error ("gdbarch: gdbarch_frame_chain invalid");
2382   if (gdbarch_debug >= 2)
2383     fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_chain called\n");
2384   return gdbarch->frame_chain (frame);
2385 }
2386
2387 void
2388 set_gdbarch_frame_chain (struct gdbarch *gdbarch,
2389                          gdbarch_frame_chain_ftype frame_chain)
2390 {
2391   gdbarch->frame_chain = frame_chain;
2392 }
2393
2394 int
2395 gdbarch_frame_chain_valid (struct gdbarch *gdbarch, CORE_ADDR chain, struct frame_info *thisframe)
2396 {
2397   if (gdbarch->frame_chain_valid == 0)
2398     internal_error ("gdbarch: gdbarch_frame_chain_valid invalid");
2399   if (gdbarch_debug >= 2)
2400     fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_chain_valid called\n");
2401   return gdbarch->frame_chain_valid (chain, thisframe);
2402 }
2403
2404 void
2405 set_gdbarch_frame_chain_valid (struct gdbarch *gdbarch,
2406                                gdbarch_frame_chain_valid_ftype frame_chain_valid)
2407 {
2408   gdbarch->frame_chain_valid = frame_chain_valid;
2409 }
2410
2411 CORE_ADDR
2412 gdbarch_frame_saved_pc (struct gdbarch *gdbarch, struct frame_info *fi)
2413 {
2414   if (gdbarch->frame_saved_pc == 0)
2415     internal_error ("gdbarch: gdbarch_frame_saved_pc invalid");
2416   if (gdbarch_debug >= 2)
2417     fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_saved_pc called\n");
2418   return gdbarch->frame_saved_pc (fi);
2419 }
2420
2421 void
2422 set_gdbarch_frame_saved_pc (struct gdbarch *gdbarch,
2423                             gdbarch_frame_saved_pc_ftype frame_saved_pc)
2424 {
2425   gdbarch->frame_saved_pc = frame_saved_pc;
2426 }
2427
2428 CORE_ADDR
2429 gdbarch_frame_args_address (struct gdbarch *gdbarch, struct frame_info *fi)
2430 {
2431   if (gdbarch->frame_args_address == 0)
2432     internal_error ("gdbarch: gdbarch_frame_args_address invalid");
2433   if (gdbarch_debug >= 2)
2434     fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_args_address called\n");
2435   return gdbarch->frame_args_address (fi);
2436 }
2437
2438 void
2439 set_gdbarch_frame_args_address (struct gdbarch *gdbarch,
2440                                 gdbarch_frame_args_address_ftype frame_args_address)
2441 {
2442   gdbarch->frame_args_address = frame_args_address;
2443 }
2444
2445 CORE_ADDR
2446 gdbarch_frame_locals_address (struct gdbarch *gdbarch, struct frame_info *fi)
2447 {
2448   if (gdbarch->frame_locals_address == 0)
2449     internal_error ("gdbarch: gdbarch_frame_locals_address invalid");
2450   if (gdbarch_debug >= 2)
2451     fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_locals_address called\n");
2452   return gdbarch->frame_locals_address (fi);
2453 }
2454
2455 void
2456 set_gdbarch_frame_locals_address (struct gdbarch *gdbarch,
2457                                   gdbarch_frame_locals_address_ftype frame_locals_address)
2458 {
2459   gdbarch->frame_locals_address = frame_locals_address;
2460 }
2461
2462 CORE_ADDR
2463 gdbarch_saved_pc_after_call (struct gdbarch *gdbarch, struct frame_info *frame)
2464 {
2465   if (gdbarch->saved_pc_after_call == 0)
2466     internal_error ("gdbarch: gdbarch_saved_pc_after_call invalid");
2467   if (gdbarch_debug >= 2)
2468     fprintf_unfiltered (gdb_stdlog, "gdbarch_saved_pc_after_call called\n");
2469   return gdbarch->saved_pc_after_call (frame);
2470 }
2471
2472 void
2473 set_gdbarch_saved_pc_after_call (struct gdbarch *gdbarch,
2474                                  gdbarch_saved_pc_after_call_ftype saved_pc_after_call)
2475 {
2476   gdbarch->saved_pc_after_call = saved_pc_after_call;
2477 }
2478
2479 int
2480 gdbarch_frame_num_args (struct gdbarch *gdbarch, struct frame_info *frame)
2481 {
2482   if (gdbarch->frame_num_args == 0)
2483     internal_error ("gdbarch: gdbarch_frame_num_args invalid");
2484   if (gdbarch_debug >= 2)
2485     fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_num_args called\n");
2486   return gdbarch->frame_num_args (frame);
2487 }
2488
2489 void
2490 set_gdbarch_frame_num_args (struct gdbarch *gdbarch,
2491                             gdbarch_frame_num_args_ftype frame_num_args)
2492 {
2493   gdbarch->frame_num_args = frame_num_args;
2494 }
2495
2496 int
2497 gdbarch_stack_align_p (struct gdbarch *gdbarch)
2498 {
2499   return gdbarch->stack_align != 0;
2500 }
2501
2502 CORE_ADDR
2503 gdbarch_stack_align (struct gdbarch *gdbarch, CORE_ADDR sp)
2504 {
2505   if (gdbarch->stack_align == 0)
2506     internal_error ("gdbarch: gdbarch_stack_align invalid");
2507   if (gdbarch_debug >= 2)
2508     fprintf_unfiltered (gdb_stdlog, "gdbarch_stack_align called\n");
2509   return gdbarch->stack_align (sp);
2510 }
2511
2512 void
2513 set_gdbarch_stack_align (struct gdbarch *gdbarch,
2514                          gdbarch_stack_align_ftype stack_align)
2515 {
2516   gdbarch->stack_align = stack_align;
2517 }
2518
2519 int
2520 gdbarch_reg_struct_has_addr_p (struct gdbarch *gdbarch)
2521 {
2522   return gdbarch->reg_struct_has_addr != 0;
2523 }
2524
2525 int
2526 gdbarch_reg_struct_has_addr (struct gdbarch *gdbarch, int gcc_p, struct type *type)
2527 {
2528   if (gdbarch->reg_struct_has_addr == 0)
2529     internal_error ("gdbarch: gdbarch_reg_struct_has_addr invalid");
2530   if (gdbarch_debug >= 2)
2531     fprintf_unfiltered (gdb_stdlog, "gdbarch_reg_struct_has_addr called\n");
2532   return gdbarch->reg_struct_has_addr (gcc_p, type);
2533 }
2534
2535 void
2536 set_gdbarch_reg_struct_has_addr (struct gdbarch *gdbarch,
2537                                  gdbarch_reg_struct_has_addr_ftype reg_struct_has_addr)
2538 {
2539   gdbarch->reg_struct_has_addr = reg_struct_has_addr;
2540 }
2541
2542
2543 /* Keep a registrary of per-architecture data-pointers required by GDB
2544    modules. */
2545
2546 struct gdbarch_data
2547 {
2548   int index;
2549 };
2550
2551 struct gdbarch_data_registration
2552 {
2553   gdbarch_data_ftype *init;
2554   struct gdbarch_data *data;
2555   struct gdbarch_data_registration *next;
2556 };
2557
2558 struct gdbarch_data_registrary
2559 {
2560   int nr;
2561   struct gdbarch_data_registration *registrations;
2562 };
2563
2564 struct gdbarch_data_registrary gdbarch_data_registrary =
2565 {
2566   0, NULL,
2567 };
2568
2569 struct gdbarch_data *
2570 register_gdbarch_data (gdbarch_data_ftype *init)
2571 {
2572   struct gdbarch_data_registration **curr;
2573   for (curr = &gdbarch_data_registrary.registrations;
2574        (*curr) != NULL;
2575        curr = &(*curr)->next);
2576   (*curr) = XMALLOC (struct gdbarch_data_registration);
2577   (*curr)->next = NULL;
2578   (*curr)->init = init;
2579   (*curr)->data = XMALLOC (struct gdbarch_data);
2580   (*curr)->data->index = gdbarch_data_registrary.nr++;
2581   return (*curr)->data;
2582 }
2583
2584
2585 /* Walk through all the registered users initializing each in turn. */
2586
2587 static void
2588 init_gdbarch_data (struct gdbarch *gdbarch)
2589 {
2590   struct gdbarch_data_registration *rego;
2591   gdbarch->nr_data = gdbarch_data_registrary.nr + 1;
2592   gdbarch->data = xmalloc (sizeof (void*) * gdbarch->nr_data);
2593   for (rego = gdbarch_data_registrary.registrations;
2594        rego != NULL;
2595        rego = rego->next)
2596     {
2597       if (rego->data->index < gdbarch->nr_data)
2598         gdbarch->data[rego->data->index] = rego->init ();
2599     }
2600 }
2601
2602
2603 /* Return the current value of the specified per-architecture
2604    data-pointer. */
2605
2606 void *
2607 gdbarch_data (data)
2608      struct gdbarch_data *data;
2609 {
2610   if (data->index >= current_gdbarch->nr_data)
2611     internal_error ("gdbarch_data: request for non-existant data.");
2612   return current_gdbarch->data[data->index];
2613 }
2614
2615
2616
2617 /* Keep a registrary of swaped data required by GDB modules. */
2618
2619 struct gdbarch_swap
2620 {
2621   void *swap;
2622   struct gdbarch_swap_registration *source;
2623   struct gdbarch_swap *next;
2624 };
2625
2626 struct gdbarch_swap_registration
2627 {
2628   void *data;
2629   unsigned long sizeof_data;
2630   gdbarch_swap_ftype *init;
2631   struct gdbarch_swap_registration *next;
2632 };
2633
2634 struct gdbarch_swap_registrary
2635 {
2636   int nr;
2637   struct gdbarch_swap_registration *registrations;
2638 };
2639
2640 struct gdbarch_swap_registrary gdbarch_swap_registrary = 
2641 {
2642   0, NULL,
2643 };
2644
2645 void
2646 register_gdbarch_swap (void *data,
2647                        unsigned long sizeof_data,
2648                        gdbarch_swap_ftype *init)
2649 {
2650   struct gdbarch_swap_registration **rego;
2651   for (rego = &gdbarch_swap_registrary.registrations;
2652        (*rego) != NULL;
2653        rego = &(*rego)->next);
2654   (*rego) = XMALLOC (struct gdbarch_swap_registration);
2655   (*rego)->next = NULL;
2656   (*rego)->init = init;
2657   (*rego)->data = data;
2658   (*rego)->sizeof_data = sizeof_data;
2659 }
2660
2661
2662 static void
2663 init_gdbarch_swap (struct gdbarch *gdbarch)
2664 {
2665   struct gdbarch_swap_registration *rego;
2666   struct gdbarch_swap **curr = &gdbarch->swap;
2667   for (rego = gdbarch_swap_registrary.registrations;
2668        rego != NULL;
2669        rego = rego->next)
2670     {
2671       if (rego->data != NULL)
2672         {
2673           (*curr) = XMALLOC (struct gdbarch_swap);
2674           (*curr)->source = rego;
2675           (*curr)->swap = xmalloc (rego->sizeof_data);
2676           (*curr)->next = NULL;
2677           memset (rego->data, 0, rego->sizeof_data);
2678           curr = &(*curr)->next;
2679         }
2680       if (rego->init != NULL)
2681         rego->init ();
2682     }
2683 }
2684
2685 static void
2686 swapout_gdbarch_swap (struct gdbarch *gdbarch)
2687 {
2688   struct gdbarch_swap *curr;
2689   for (curr = gdbarch->swap;
2690        curr != NULL;
2691        curr = curr->next)
2692     memcpy (curr->swap, curr->source->data, curr->source->sizeof_data);
2693 }
2694
2695 static void
2696 swapin_gdbarch_swap (struct gdbarch *gdbarch)
2697 {
2698   struct gdbarch_swap *curr;
2699   for (curr = gdbarch->swap;
2700        curr != NULL;
2701        curr = curr->next)
2702     memcpy (curr->source->data, curr->swap, curr->source->sizeof_data);
2703 }
2704
2705
2706 /* Keep a registrary of the architectures known by GDB. */
2707
2708 struct gdbarch_init_registration
2709 {
2710   enum bfd_architecture bfd_architecture;
2711   gdbarch_init_ftype *init;
2712   struct gdbarch_list *arches;
2713   struct gdbarch_init_registration *next;
2714 };
2715
2716 static struct gdbarch_init_registration *gdbarch_init_registrary = NULL;
2717
2718 void
2719 register_gdbarch_init (enum bfd_architecture bfd_architecture,
2720                        gdbarch_init_ftype *init)
2721 {
2722   struct gdbarch_init_registration **curr;
2723   const struct bfd_arch_info *bfd_arch_info;
2724   /* Check that BFD reconizes this architecture */
2725   bfd_arch_info = bfd_lookup_arch (bfd_architecture, 0);
2726   if (bfd_arch_info == NULL)
2727     {
2728       internal_error ("gdbarch: Attempt to register unknown architecture (%d)", bfd_architecture);
2729     }
2730   /* Check that we haven't seen this architecture before */
2731   for (curr = &gdbarch_init_registrary;
2732        (*curr) != NULL;
2733        curr = &(*curr)->next)
2734     {
2735       if (bfd_architecture == (*curr)->bfd_architecture)
2736         internal_error ("gdbarch: Duplicate registraration of architecture (%s)",
2737                bfd_arch_info->printable_name);
2738     }
2739   /* log it */
2740   if (gdbarch_debug)
2741     fprintf_unfiltered (gdb_stdlog, "register_gdbarch_init (%s, 0x%08lx)\n",
2742                         bfd_arch_info->printable_name,
2743                         (long) init);
2744   /* Append it */
2745   (*curr) = XMALLOC (struct gdbarch_init_registration);
2746   (*curr)->bfd_architecture = bfd_architecture;
2747   (*curr)->init = init;
2748   (*curr)->arches = NULL;
2749   (*curr)->next = NULL;
2750 }
2751   
2752
2753
2754 /* Look for an architecture using gdbarch_info.  Base search on only
2755    BFD_ARCH_INFO and BYTE_ORDER. */
2756
2757 struct gdbarch_list *
2758 gdbarch_list_lookup_by_info (struct gdbarch_list *arches,
2759                              const struct gdbarch_info *info)
2760 {
2761   for (; arches != NULL; arches = arches->next)
2762     {
2763       if (info->bfd_arch_info != arches->gdbarch->bfd_arch_info)
2764         continue;
2765       if (info->byte_order != arches->gdbarch->byte_order)
2766         continue;
2767       return arches;
2768     }
2769   return NULL;
2770 }
2771
2772
2773 /* Update the current architecture. Return ZERO if the update request
2774    failed. */
2775
2776 int
2777 gdbarch_update (struct gdbarch_info info)
2778 {
2779   struct gdbarch *new_gdbarch;
2780   struct gdbarch_list **list;
2781   struct gdbarch_init_registration *rego;
2782
2783   /* Fill in any missing bits. Most important is the bfd_architecture
2784      which is used to select the target architecture. */
2785   if (info.bfd_architecture == bfd_arch_unknown)
2786     {
2787       if (info.bfd_arch_info != NULL)
2788         info.bfd_architecture = info.bfd_arch_info->arch;
2789       else if (info.abfd != NULL)
2790         info.bfd_architecture = bfd_get_arch (info.abfd);
2791       /* FIXME - should query BFD for its default architecture. */
2792       else
2793         info.bfd_architecture = current_gdbarch->bfd_arch_info->arch;
2794     }
2795   if (info.bfd_arch_info == NULL)
2796     {
2797       if (target_architecture_auto && info.abfd != NULL)
2798         info.bfd_arch_info = bfd_get_arch_info (info.abfd);
2799       else
2800         info.bfd_arch_info = current_gdbarch->bfd_arch_info;
2801     }
2802   if (info.byte_order == 0)
2803     {
2804       if (target_byte_order_auto && info.abfd != NULL)
2805         info.byte_order = (bfd_big_endian (info.abfd) ? BIG_ENDIAN
2806                            : bfd_little_endian (info.abfd) ? LITTLE_ENDIAN
2807                            : 0);
2808       else
2809         info.byte_order = current_gdbarch->byte_order;
2810       /* FIXME - should query BFD for its default byte-order. */
2811     }
2812   /* A default for abfd? */
2813
2814   /* Find the target that knows about this architecture. */
2815   for (rego = gdbarch_init_registrary;
2816        rego != NULL && rego->bfd_architecture != info.bfd_architecture;
2817        rego = rego->next);
2818   if (rego == NULL)
2819     {
2820       if (gdbarch_debug)
2821         fprintf_unfiltered (gdb_stdlog, "gdbarch_update: No matching architecture\n");
2822       return 0;
2823     }
2824
2825   if (gdbarch_debug)
2826     {
2827       fprintf_unfiltered (gdb_stdlog,
2828                           "gdbarch_update: info.bfd_architecture %d (%s)\n",
2829                           info.bfd_architecture,
2830                           bfd_lookup_arch (info.bfd_architecture, 0)->printable_name);
2831       fprintf_unfiltered (gdb_stdlog,
2832                           "gdbarch_update: info.bfd_arch_info %s\n",
2833                           (info.bfd_arch_info != NULL
2834                            ? info.bfd_arch_info->printable_name
2835                            : "(null)"));
2836       fprintf_unfiltered (gdb_stdlog,
2837                           "gdbarch_update: info.byte_order %d (%s)\n",
2838                           info.byte_order,
2839                           (info.byte_order == BIG_ENDIAN ? "big"
2840                            : info.byte_order == LITTLE_ENDIAN ? "little"
2841                            : "default"));
2842       fprintf_unfiltered (gdb_stdlog,
2843                           "gdbarch_update: info.abfd 0x%lx\n",
2844                           (long) info.abfd);
2845       fprintf_unfiltered (gdb_stdlog,
2846                           "gdbarch_update: info.tdep_info 0x%lx\n",
2847                           (long) info.tdep_info);
2848     }
2849
2850   /* Ask the target for a replacement architecture. */
2851   new_gdbarch = rego->init (info, rego->arches);
2852
2853   /* Did the target like it?  No. Reject the change. */
2854   if (new_gdbarch == NULL)
2855     {
2856       if (gdbarch_debug)
2857         fprintf_unfiltered (gdb_stdlog, "gdbarch_update: Target rejected architecture\n");
2858       return 0;
2859     }
2860
2861   /* Did the architecture change?  No. Do nothing. */
2862   if (current_gdbarch == new_gdbarch)
2863     {
2864       if (gdbarch_debug)
2865         fprintf_unfiltered (gdb_stdlog, "gdbarch_update: Architecture 0x%08lx (%s) unchanged\n",
2866                             (long) new_gdbarch,
2867                             new_gdbarch->bfd_arch_info->printable_name);
2868       return 1;
2869     }
2870
2871   /* Swap all data belonging to the old target out */
2872   swapout_gdbarch_swap (current_gdbarch);
2873
2874   /* Is this a pre-existing architecture?  Yes. Swap it in.  */
2875   for (list = &rego->arches;
2876        (*list) != NULL;
2877        list = &(*list)->next)
2878     {
2879       if ((*list)->gdbarch == new_gdbarch)
2880         {
2881           if (gdbarch_debug)
2882             fprintf_unfiltered (gdb_stdlog, "gdbarch_update: Previous architecture 0x%08lx (%s) selected\n",
2883                                 (long) new_gdbarch,
2884                                 new_gdbarch->bfd_arch_info->printable_name);
2885           current_gdbarch = new_gdbarch;
2886           swapin_gdbarch_swap (new_gdbarch);
2887           return 1;
2888         }
2889     }
2890     
2891   /* Append this new architecture to this targets list. */
2892   (*list) = XMALLOC (struct gdbarch_list);
2893   (*list)->next = NULL;
2894   (*list)->gdbarch = new_gdbarch;
2895
2896   /* Switch to this new architecture.  Dump it out. */
2897   current_gdbarch = new_gdbarch;
2898   if (gdbarch_debug)
2899     {
2900       fprintf_unfiltered (gdb_stdlog,
2901                           "gdbarch_update: New architecture 0x%08lx (%s) selected\n",
2902                           (long) new_gdbarch,
2903                           new_gdbarch->bfd_arch_info->printable_name);
2904       gdbarch_dump ();
2905     }
2906   
2907   /* Check that the newly installed architecture is valid.  */
2908   verify_gdbarch (new_gdbarch);
2909
2910   /* Initialize the per-architecture memory (swap) areas.
2911      CURRENT_GDBARCH must be update before these modules are
2912      called. */
2913   init_gdbarch_swap (new_gdbarch);
2914   
2915   /* Initialize the per-architecture data-pointer of all parties that
2916      registered an interest in this architecture.  CURRENT_GDBARCH
2917      must be updated before these modules are called. */
2918   init_gdbarch_data (new_gdbarch);
2919   
2920   return 1;
2921 }
2922
2923
2924
2925 /* Functions to manipulate the endianness of the target.  */
2926
2927 #ifdef TARGET_BYTE_ORDER_SELECTABLE
2928 /* compat - Catch old targets that expect a selectable byte-order to
2929    default to BIG_ENDIAN */
2930 #ifndef TARGET_BYTE_ORDER_DEFAULT
2931 #define TARGET_BYTE_ORDER_DEFAULT BIG_ENDIAN
2932 #endif
2933 #endif
2934 #if !TARGET_BYTE_ORDER_SELECTABLE_P
2935 #ifndef TARGET_BYTE_ORDER_DEFAULT
2936 /* compat - Catch old non byte-order selectable targets that do not
2937    define TARGET_BYTE_ORDER_DEFAULT and instead expect
2938    TARGET_BYTE_ORDER to be used as the default.  For targets that
2939    defined neither TARGET_BYTE_ORDER nor TARGET_BYTE_ORDER_DEFAULT the
2940    below will get a strange compiler warning. */
2941 #define TARGET_BYTE_ORDER_DEFAULT TARGET_BYTE_ORDER
2942 #endif
2943 #endif
2944 #ifndef TARGET_BYTE_ORDER_DEFAULT
2945 #define TARGET_BYTE_ORDER_DEFAULT BIG_ENDIAN /* arbitrary */
2946 #endif
2947 int target_byte_order = TARGET_BYTE_ORDER_DEFAULT;
2948 int target_byte_order_auto = 1;
2949
2950 /* Chain containing the \"set endian\" commands.  */
2951 static struct cmd_list_element *endianlist = NULL;
2952
2953 /* Called by ``show endian''.  */
2954 static void
2955 show_endian (char *args, int from_tty)
2956 {
2957   char *msg =
2958     (TARGET_BYTE_ORDER_AUTO
2959      ? "The target endianness is set automatically (currently %s endian)\n"
2960      : "The target is assumed to be %s endian\n");
2961   printf_unfiltered (msg, (TARGET_BYTE_ORDER == BIG_ENDIAN ? "big" : "little"));
2962 }
2963
2964 /* Called if the user enters ``set endian'' without an argument.  */
2965 static void
2966 set_endian (char *args, int from_tty)
2967 {
2968   printf_unfiltered ("\"set endian\" must be followed by \"auto\", \"big\" or \"little\".\n");
2969   show_endian (args, from_tty);
2970 }
2971
2972 /* Called by ``set endian big''.  */
2973 static void
2974 set_endian_big (char *args, int from_tty)
2975 {
2976   if (TARGET_BYTE_ORDER_SELECTABLE_P)
2977     {
2978       target_byte_order = BIG_ENDIAN;
2979       target_byte_order_auto = 0;
2980       if (GDB_MULTI_ARCH)
2981         {
2982           struct gdbarch_info info;
2983           memset (&info, 0, sizeof info);
2984           info.byte_order = BIG_ENDIAN;
2985           gdbarch_update (info);
2986         }
2987     }
2988   else
2989     {
2990       printf_unfiltered ("Byte order is not selectable.");
2991       show_endian (args, from_tty);
2992     }
2993 }
2994
2995 /* Called by ``set endian little''.  */
2996 static void
2997 set_endian_little (char *args, int from_tty)
2998 {
2999   if (TARGET_BYTE_ORDER_SELECTABLE_P)
3000     {
3001       target_byte_order = LITTLE_ENDIAN;
3002       target_byte_order_auto = 0;
3003       if (GDB_MULTI_ARCH)
3004         {
3005           struct gdbarch_info info;
3006           memset (&info, 0, sizeof info);
3007           info.byte_order = LITTLE_ENDIAN;
3008           gdbarch_update (info);
3009         }
3010     }
3011   else
3012     {
3013       printf_unfiltered ("Byte order is not selectable.");
3014       show_endian (args, from_tty);
3015     }
3016 }
3017
3018 /* Called by ``set endian auto''.  */
3019 static void
3020 set_endian_auto (char *args, int from_tty)
3021 {
3022   if (TARGET_BYTE_ORDER_SELECTABLE_P)
3023     {
3024       target_byte_order_auto = 1;
3025     }
3026   else
3027     {
3028       printf_unfiltered ("Byte order is not selectable.");
3029       show_endian (args, from_tty);
3030     }
3031 }
3032
3033 /* Set the endianness from a BFD.  */
3034 static void
3035 set_endian_from_file (bfd *abfd)
3036 {
3037   if (TARGET_BYTE_ORDER_SELECTABLE_P)
3038     {
3039       int want;
3040       
3041       if (bfd_big_endian (abfd))
3042         want = BIG_ENDIAN;
3043       else
3044         want = LITTLE_ENDIAN;
3045       if (TARGET_BYTE_ORDER_AUTO)
3046         target_byte_order = want;
3047       else if (TARGET_BYTE_ORDER != want)
3048         warning ("%s endian file does not match %s endian target.",
3049                  want == BIG_ENDIAN ? "big" : "little",
3050                  TARGET_BYTE_ORDER == BIG_ENDIAN ? "big" : "little");
3051     }
3052   else
3053     {
3054       if (bfd_big_endian (abfd)
3055           ? TARGET_BYTE_ORDER != BIG_ENDIAN
3056           : TARGET_BYTE_ORDER == BIG_ENDIAN)
3057         warning ("%s endian file does not match %s endian target.",
3058                  bfd_big_endian (abfd) ? "big" : "little",
3059                  TARGET_BYTE_ORDER == BIG_ENDIAN ? "big" : "little");
3060     }
3061 }
3062
3063
3064
3065 /* Functions to manipulate the architecture of the target */
3066
3067 enum set_arch { set_arch_auto, set_arch_manual };
3068
3069 int target_architecture_auto = 1;
3070 extern const struct bfd_arch_info bfd_default_arch_struct;
3071 const struct bfd_arch_info *target_architecture = &bfd_default_arch_struct;
3072 int (*target_architecture_hook) (const struct bfd_arch_info *ap);
3073
3074 static void show_endian (char *, int);
3075 static void set_endian (char *, int);
3076 static void set_endian_big (char *, int);
3077 static void set_endian_little (char *, int);
3078 static void set_endian_auto (char *, int);
3079 static void set_endian_from_file (bfd *);
3080 static int arch_ok (const struct bfd_arch_info *arch);
3081 static void set_arch (const struct bfd_arch_info *arch, enum set_arch type);
3082 static void show_architecture (char *, int);
3083 static void set_architecture (char *, int);
3084 static void info_architecture (char *, int);
3085 static void set_architecture_from_file (bfd *);
3086
3087 /* Do the real work of changing the current architecture */
3088
3089 static int
3090 arch_ok (const struct bfd_arch_info *arch)
3091 {
3092   /* Should be performing the more basic check that the binary is
3093      compatible with GDB. */
3094   /* Check with the target that the architecture is valid. */
3095   return (target_architecture_hook == NULL
3096           || target_architecture_hook (arch));
3097 }
3098
3099 static void
3100 set_arch (const struct bfd_arch_info *arch,
3101           enum set_arch type)
3102 {
3103   switch (type)
3104     {
3105     case set_arch_auto:
3106       if (!arch_ok (arch))
3107         warning ("Target may not support %s architecture",
3108                  arch->printable_name);
3109       target_architecture = arch;
3110       break;
3111     case set_arch_manual:
3112       if (!arch_ok (arch))
3113         {
3114           printf_unfiltered ("Target does not support `%s' architecture.\n",
3115                              arch->printable_name);
3116         }
3117       else
3118         {
3119           target_architecture_auto = 0;
3120           target_architecture = arch;
3121         }
3122       break;
3123     }
3124   if (gdbarch_debug)
3125     gdbarch_dump ();
3126 }
3127
3128 /* Called if the user enters ``show architecture'' without an argument. */
3129 static void
3130 show_architecture (char *args, int from_tty)
3131 {
3132   const char *arch;
3133   arch = TARGET_ARCHITECTURE->printable_name;
3134   if (target_architecture_auto)
3135     printf_filtered ("The target architecture is set automatically (currently %s)\n", arch);
3136   else
3137     printf_filtered ("The target architecture is assumed to be %s\n", arch);
3138 }
3139
3140 /* Called if the user enters ``set architecture'' with or without an
3141    argument. */
3142 static void
3143 set_architecture (char *args, int from_tty)
3144 {
3145   if (args == NULL)
3146     {
3147       printf_unfiltered ("\"set architecture\" must be followed by \"auto\" or an architecture name.\n");
3148     }
3149   else if (strcmp (args, "auto") == 0)
3150     {
3151       target_architecture_auto = 1;
3152     }
3153   else if (GDB_MULTI_ARCH)
3154     {
3155       const struct bfd_arch_info *arch = bfd_scan_arch (args);
3156       if (arch == NULL)
3157         printf_unfiltered ("Architecture `%s' not reconized.\n", args);
3158       else
3159         {
3160           struct gdbarch_info info;
3161           memset (&info, 0, sizeof info);
3162           info.bfd_arch_info = arch;
3163           if (gdbarch_update (info))
3164             target_architecture_auto = 0;
3165           else
3166             printf_unfiltered ("Architecture `%s' not reconized.\n", args);
3167         }
3168     }
3169   else
3170     {
3171       const struct bfd_arch_info *arch = bfd_scan_arch (args);
3172       if (arch != NULL)
3173         set_arch (arch, set_arch_manual);
3174       else
3175         printf_unfiltered ("Architecture `%s' not reconized.\n", args);
3176     }
3177 }
3178
3179 /* Called if the user enters ``info architecture'' without an argument. */
3180 static void
3181 info_architecture (char *args, int from_tty)
3182 {
3183   enum bfd_architecture a;
3184   if (GDB_MULTI_ARCH)
3185     {
3186       if (gdbarch_init_registrary != NULL)
3187         {
3188           struct gdbarch_init_registration *rego;
3189           printf_filtered ("Available architectures are:\n");
3190           for (rego = gdbarch_init_registrary;
3191                rego != NULL;
3192                rego = rego->next)
3193             {
3194               const struct bfd_arch_info *ap;
3195               ap = bfd_lookup_arch (rego->bfd_architecture, 0);
3196               if (ap != NULL)
3197                 {
3198                   do
3199                     {
3200                       printf_filtered (" %s", ap->printable_name);
3201                       ap = ap->next;
3202                     }
3203                   while (ap != NULL);
3204                   printf_filtered ("\n");
3205                 }
3206             }
3207         }
3208       else
3209         {
3210           printf_filtered ("There are no available architectures.\n");
3211         }
3212       return;
3213     }
3214   printf_filtered ("Available architectures are:\n");
3215   for (a = bfd_arch_obscure + 1; a < bfd_arch_last; a++)
3216     {
3217       const struct bfd_arch_info *ap = bfd_lookup_arch (a, 0);
3218       if (ap != NULL)
3219         {
3220           do
3221             {
3222               printf_filtered (" %s", ap->printable_name);
3223               ap = ap->next;
3224             }
3225           while (ap != NULL);
3226           printf_filtered ("\n");
3227         }
3228     }
3229 }
3230
3231 /* Set the architecture from arch/machine */
3232 void
3233 set_architecture_from_arch_mach (arch, mach)
3234      enum bfd_architecture arch;
3235      unsigned long mach;
3236 {
3237   const struct bfd_arch_info *wanted = bfd_lookup_arch (arch, mach);
3238   if (wanted != NULL)
3239     set_arch (wanted, set_arch_manual);
3240   else
3241     internal_error ("gdbarch: hardwired architecture/machine not reconized");
3242 }
3243
3244 /* Set the architecture from a BFD */
3245 static void
3246 set_architecture_from_file (bfd *abfd)
3247 {
3248   const struct bfd_arch_info *wanted = bfd_get_arch_info (abfd);
3249   if (target_architecture_auto)
3250     {
3251       set_arch (wanted, set_arch_auto);
3252     }
3253   else if (wanted != target_architecture)
3254     {
3255       warning ("%s architecture file may be incompatible with %s target.",
3256                wanted->printable_name,
3257                target_architecture->printable_name);
3258     }
3259 }
3260
3261
3262 /* Misc helper functions for targets. */
3263
3264 int
3265 frame_num_args_unknown (fi)
3266      struct frame_info *fi;
3267 {
3268   return -1;
3269 }
3270
3271
3272 int
3273 generic_register_convertible_not (num)
3274      int num;
3275 {
3276   return 0;
3277 }
3278   
3279
3280 /* Disassembler */
3281
3282 /* Pointer to the target-dependent disassembly function.  */
3283 int (*tm_print_insn) (bfd_vma, disassemble_info *);
3284 disassemble_info tm_print_insn_info;
3285
3286
3287
3288 /* Set the dynamic target-system-dependant parameters (architecture,
3289    byte-order) using information found in the BFD */
3290
3291 void
3292 set_gdbarch_from_file (abfd)
3293      bfd *abfd;
3294 {
3295   if (GDB_MULTI_ARCH)
3296     {
3297       struct gdbarch_info info;
3298       memset (&info, 0, sizeof info);
3299       info.abfd = abfd;
3300       gdbarch_update (info);
3301       return;
3302     }
3303   set_architecture_from_file (abfd);
3304   set_endian_from_file (abfd);
3305 }
3306
3307
3308 /* Initialize the current architecture.  */
3309 void
3310 initialize_current_architecture ()
3311 {
3312   if (GDB_MULTI_ARCH)
3313     {
3314       struct gdbarch_init_registration *rego;
3315       const struct bfd_arch_info *chosen = NULL;
3316       for (rego = gdbarch_init_registrary; rego != NULL; rego = rego->next)
3317         {
3318           const struct bfd_arch_info *ap
3319             = bfd_lookup_arch (rego->bfd_architecture, 0);
3320
3321           /* Choose the first architecture alphabetically.  */
3322           if (chosen == NULL
3323               || strcmp (ap->printable_name, chosen->printable_name) < 0)
3324             chosen = ap;
3325         }
3326
3327       if (chosen != NULL)
3328         {
3329           struct gdbarch_info info;
3330           memset (&info, 0, sizeof info);
3331           info.bfd_arch_info = chosen;
3332           gdbarch_update (info);
3333         }
3334     }
3335 }
3336
3337 extern void _initialize_gdbarch (void);
3338 void
3339 _initialize_gdbarch ()
3340 {
3341   struct cmd_list_element *c;
3342
3343   add_prefix_cmd ("endian", class_support, set_endian,
3344                   "Set endianness of target.",
3345                   &endianlist, "set endian ", 0, &setlist);
3346   add_cmd ("big", class_support, set_endian_big,
3347            "Set target as being big endian.", &endianlist);
3348   add_cmd ("little", class_support, set_endian_little,
3349            "Set target as being little endian.", &endianlist);
3350   add_cmd ("auto", class_support, set_endian_auto,
3351            "Select target endianness automatically.", &endianlist);
3352   add_cmd ("endian", class_support, show_endian,
3353            "Show endianness of target.", &showlist);
3354
3355   add_cmd ("architecture", class_support, set_architecture,
3356            "Set architecture of target.", &setlist);
3357   add_alias_cmd ("processor", "architecture", class_support, 1, &setlist);
3358   add_cmd ("architecture", class_support, show_architecture,
3359            "Show architecture of target.", &showlist);
3360   add_cmd ("architecture", class_support, info_architecture,
3361            "List supported target architectures", &infolist);
3362
3363   INIT_DISASSEMBLE_INFO_NO_ARCH (tm_print_insn_info, gdb_stdout, (fprintf_ftype)fprintf_filtered);
3364   tm_print_insn_info.flavour = bfd_target_unknown_flavour;
3365   tm_print_insn_info.read_memory_func = dis_asm_read_memory;
3366   tm_print_insn_info.memory_error_func = dis_asm_memory_error;
3367   tm_print_insn_info.print_address_func = dis_asm_print_address;
3368
3369   add_show_from_set (add_set_cmd ("arch",
3370                                   class_maintenance,
3371                                   var_zinteger,
3372                                   (char *)&gdbarch_debug,
3373                                   "Set architecture debugging.\n\
3374 When non-zero, architecture debugging is enabled.", &setdebuglist),
3375                      &showdebuglist);
3376   c = add_set_cmd ("archdebug",
3377                    class_maintenance,
3378                    var_zinteger,
3379                    (char *)&gdbarch_debug,
3380                    "Set architecture debugging.\n\
3381 When non-zero, architecture debugging is enabled.", &setlist);
3382
3383   deprecate_cmd (c, "set debug arch");
3384   deprecate_cmd (add_show_from_set (c, &showlist), "show debug arch");
3385 }