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