a935becab7aa6466723e96adeb81d7dc2cb01f80
[platform/upstream/binutils.git] / gdb / gdbarch.c
1 /* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
2
3 /* Dynamic architecture support for GDB, the GNU debugger.
4
5    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6    Free Software Foundation, Inc.
7
8    This file is part of GDB.
9
10    This program is free software; you can redistribute it and/or modify
11    it under the terms of the GNU General Public License as published by
12    the Free Software Foundation; either version 2 of the License, or
13    (at your option) any later version.
14
15    This program is distributed in the hope that it will be useful,
16    but WITHOUT ANY WARRANTY; without even the implied warranty of
17    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18    GNU General Public License for more details.
19
20    You should have received a copy of the GNU General Public License
21    along with this program; if not, write to the Free Software
22    Foundation, Inc., 51 Franklin Street, Fifth Floor,
23    Boston, MA 02110-1301, USA.  */
24
25 /* This file was created with the aid of ``gdbarch.sh''.
26
27    The Bourne shell script ``gdbarch.sh'' creates the files
28    ``new-gdbarch.c'' and ``new-gdbarch.h and then compares them
29    against the existing ``gdbarch.[hc]''.  Any differences found
30    being reported.
31
32    If editing this file, please also run gdbarch.sh and merge any
33    changes into that script. Conversely, when making sweeping changes
34    to this file, modifying gdbarch.sh and using its output may prove
35    easier. */
36
37
38 #include "defs.h"
39 #include "arch-utils.h"
40
41 #include "gdbcmd.h"
42 #include "inferior.h" 
43 #include "symcat.h"
44
45 #include "floatformat.h"
46
47 #include "gdb_assert.h"
48 #include "gdb_string.h"
49 #include "gdb-events.h"
50 #include "reggroups.h"
51 #include "osabi.h"
52 #include "gdb_obstack.h"
53
54 /* Static function declarations */
55
56 static void alloc_gdbarch_data (struct gdbarch *);
57
58 /* Non-zero if we want to trace architecture code.  */
59
60 #ifndef GDBARCH_DEBUG
61 #define GDBARCH_DEBUG 0
62 #endif
63 int gdbarch_debug = GDBARCH_DEBUG;
64 static void
65 show_gdbarch_debug (struct ui_file *file, int from_tty,
66                     struct cmd_list_element *c, const char *value)
67 {
68   fprintf_filtered (file, _("Architecture debugging is %s.\n"), value);
69 }
70
71 static const char *
72 pformat (const struct floatformat **format)
73 {
74   if (format == NULL)
75     return "(null)";
76   else
77     /* Just print out one of them - this is only for diagnostics.  */
78     return format[0]->name;
79 }
80
81
82 /* Maintain the struct gdbarch object */
83
84 struct gdbarch
85 {
86   /* Has this architecture been fully initialized?  */
87   int initialized_p;
88
89   /* An obstack bound to the lifetime of the architecture.  */
90   struct obstack *obstack;
91
92   /* basic architectural information */
93   const struct bfd_arch_info * bfd_arch_info;
94   int byte_order;
95   enum gdb_osabi osabi;
96   const struct target_desc * target_desc;
97
98   /* target specific vector. */
99   struct gdbarch_tdep *tdep;
100   gdbarch_dump_tdep_ftype *dump_tdep;
101
102   /* per-architecture data-pointers */
103   unsigned nr_data;
104   void **data;
105
106   /* per-architecture swap-regions */
107   struct gdbarch_swap *swap;
108
109   /* Multi-arch values.
110
111      When extending this structure you must:
112
113      Add the field below.
114
115      Declare set/get functions and define the corresponding
116      macro in gdbarch.h.
117
118      gdbarch_alloc(): If zero/NULL is not a suitable default,
119      initialize the new field.
120
121      verify_gdbarch(): Confirm that the target updated the field
122      correctly.
123
124      gdbarch_dump(): Add a fprintf_unfiltered call so that the new
125      field is dumped out
126
127      ``startup_gdbarch()'': Append an initial value to the static
128      variable (base values on the host's c-type system).
129
130      get_gdbarch(): Implement the set/get functions (probably using
131      the macro's as shortcuts).
132
133      */
134
135   int short_bit;
136   int int_bit;
137   int long_bit;
138   int long_long_bit;
139   int float_bit;
140   const struct floatformat ** float_format;
141   int double_bit;
142   const struct floatformat ** double_format;
143   int long_double_bit;
144   const struct floatformat ** long_double_format;
145   int ptr_bit;
146   int addr_bit;
147   int bfd_vma_bit;
148   int char_signed;
149   gdbarch_read_pc_ftype *read_pc;
150   gdbarch_write_pc_ftype *write_pc;
151   gdbarch_virtual_frame_pointer_ftype *virtual_frame_pointer;
152   gdbarch_pseudo_register_read_ftype *pseudo_register_read;
153   gdbarch_pseudo_register_write_ftype *pseudo_register_write;
154   int num_regs;
155   int num_pseudo_regs;
156   int sp_regnum;
157   int pc_regnum;
158   int ps_regnum;
159   int fp0_regnum;
160   gdbarch_stab_reg_to_regnum_ftype *stab_reg_to_regnum;
161   gdbarch_ecoff_reg_to_regnum_ftype *ecoff_reg_to_regnum;
162   gdbarch_dwarf_reg_to_regnum_ftype *dwarf_reg_to_regnum;
163   gdbarch_sdb_reg_to_regnum_ftype *sdb_reg_to_regnum;
164   gdbarch_dwarf2_reg_to_regnum_ftype *dwarf2_reg_to_regnum;
165   gdbarch_register_name_ftype *register_name;
166   gdbarch_register_type_ftype *register_type;
167   gdbarch_unwind_dummy_id_ftype *unwind_dummy_id;
168   int deprecated_fp_regnum;
169   gdbarch_push_dummy_call_ftype *push_dummy_call;
170   int deprecated_register_size;
171   int call_dummy_location;
172   gdbarch_push_dummy_code_ftype *push_dummy_code;
173   gdbarch_print_registers_info_ftype *print_registers_info;
174   gdbarch_print_float_info_ftype *print_float_info;
175   gdbarch_print_vector_info_ftype *print_vector_info;
176   gdbarch_register_sim_regno_ftype *register_sim_regno;
177   gdbarch_cannot_fetch_register_ftype *cannot_fetch_register;
178   gdbarch_cannot_store_register_ftype *cannot_store_register;
179   gdbarch_get_longjmp_target_ftype *get_longjmp_target;
180   int believe_pcc_promotion;
181   gdbarch_convert_register_p_ftype *convert_register_p;
182   gdbarch_register_to_value_ftype *register_to_value;
183   gdbarch_value_to_register_ftype *value_to_register;
184   gdbarch_value_from_register_ftype *value_from_register;
185   gdbarch_pointer_to_address_ftype *pointer_to_address;
186   gdbarch_address_to_pointer_ftype *address_to_pointer;
187   gdbarch_integer_to_address_ftype *integer_to_address;
188   gdbarch_return_value_ftype *return_value;
189   gdbarch_extract_return_value_ftype *extract_return_value;
190   gdbarch_store_return_value_ftype *store_return_value;
191   gdbarch_deprecated_use_struct_convention_ftype *deprecated_use_struct_convention;
192   gdbarch_deprecated_extract_struct_value_address_ftype *deprecated_extract_struct_value_address;
193   gdbarch_skip_prologue_ftype *skip_prologue;
194   gdbarch_inner_than_ftype *inner_than;
195   gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc;
196   gdbarch_adjust_breakpoint_address_ftype *adjust_breakpoint_address;
197   gdbarch_memory_insert_breakpoint_ftype *memory_insert_breakpoint;
198   gdbarch_memory_remove_breakpoint_ftype *memory_remove_breakpoint;
199   CORE_ADDR decr_pc_after_break;
200   CORE_ADDR deprecated_function_start_offset;
201   gdbarch_remote_register_number_ftype *remote_register_number;
202   gdbarch_fetch_tls_load_module_address_ftype *fetch_tls_load_module_address;
203   CORE_ADDR frame_args_skip;
204   gdbarch_unwind_pc_ftype *unwind_pc;
205   gdbarch_unwind_sp_ftype *unwind_sp;
206   gdbarch_frame_num_args_ftype *frame_num_args;
207   gdbarch_deprecated_stack_align_ftype *deprecated_stack_align;
208   gdbarch_frame_align_ftype *frame_align;
209   gdbarch_deprecated_reg_struct_has_addr_ftype *deprecated_reg_struct_has_addr;
210   gdbarch_stabs_argument_has_addr_ftype *stabs_argument_has_addr;
211   int frame_red_zone_size;
212   gdbarch_convert_from_func_ptr_addr_ftype *convert_from_func_ptr_addr;
213   gdbarch_addr_bits_remove_ftype *addr_bits_remove;
214   gdbarch_smash_text_address_ftype *smash_text_address;
215   gdbarch_software_single_step_ftype *software_single_step;
216   gdbarch_single_step_through_delay_ftype *single_step_through_delay;
217   gdbarch_print_insn_ftype *print_insn;
218   gdbarch_skip_trampoline_code_ftype *skip_trampoline_code;
219   gdbarch_skip_solib_resolver_ftype *skip_solib_resolver;
220   gdbarch_in_solib_return_trampoline_ftype *in_solib_return_trampoline;
221   gdbarch_in_function_epilogue_p_ftype *in_function_epilogue_p;
222   gdbarch_construct_inferior_arguments_ftype *construct_inferior_arguments;
223   gdbarch_elf_make_msymbol_special_ftype *elf_make_msymbol_special;
224   gdbarch_coff_make_msymbol_special_ftype *coff_make_msymbol_special;
225   const char * name_of_malloc;
226   int cannot_step_breakpoint;
227   int have_nonsteppable_watchpoint;
228   gdbarch_address_class_type_flags_ftype *address_class_type_flags;
229   gdbarch_address_class_type_flags_to_name_ftype *address_class_type_flags_to_name;
230   gdbarch_address_class_name_to_type_flags_ftype *address_class_name_to_type_flags;
231   gdbarch_register_reggroup_p_ftype *register_reggroup_p;
232   gdbarch_fetch_pointer_argument_ftype *fetch_pointer_argument;
233   gdbarch_regset_from_core_section_ftype *regset_from_core_section;
234   int vtable_function_descriptors;
235   int vbit_in_delta;
236   gdbarch_skip_permanent_breakpoint_ftype *skip_permanent_breakpoint;
237   gdbarch_overlay_update_ftype *overlay_update;
238 };
239
240
241 /* The default architecture uses host values (for want of a better
242    choice). */
243
244 extern const struct bfd_arch_info bfd_default_arch_struct;
245
246 struct gdbarch startup_gdbarch =
247 {
248   1, /* Always initialized.  */
249   NULL, /* The obstack.  */
250   /* basic architecture information */
251   &bfd_default_arch_struct,  /* bfd_arch_info */
252   BFD_ENDIAN_BIG,  /* byte_order */
253   GDB_OSABI_UNKNOWN,  /* osabi */
254   0,  /* target_desc */
255   /* target specific vector and its dump routine */
256   NULL, NULL,
257   /*per-architecture data-pointers and swap regions */
258   0, NULL, NULL,
259   /* Multi-arch values */
260   8 * sizeof (short),  /* short_bit */
261   8 * sizeof (int),  /* int_bit */
262   8 * sizeof (long),  /* long_bit */
263   8 * sizeof (LONGEST),  /* long_long_bit */
264   8 * sizeof (float),  /* float_bit */
265   0,  /* float_format */
266   8 * sizeof (double),  /* double_bit */
267   0,  /* double_format */
268   8 * sizeof (long double),  /* long_double_bit */
269   0,  /* long_double_format */
270   8 * sizeof (void*),  /* ptr_bit */
271   8 * sizeof (void*),  /* addr_bit */
272   8 * sizeof (void*),  /* bfd_vma_bit */
273   1,  /* char_signed */
274   0,  /* read_pc */
275   0,  /* write_pc */
276   0,  /* virtual_frame_pointer */
277   0,  /* pseudo_register_read */
278   0,  /* pseudo_register_write */
279   0,  /* num_regs */
280   0,  /* num_pseudo_regs */
281   -1,  /* sp_regnum */
282   -1,  /* pc_regnum */
283   -1,  /* ps_regnum */
284   0,  /* fp0_regnum */
285   0,  /* stab_reg_to_regnum */
286   0,  /* ecoff_reg_to_regnum */
287   0,  /* dwarf_reg_to_regnum */
288   0,  /* sdb_reg_to_regnum */
289   0,  /* dwarf2_reg_to_regnum */
290   0,  /* register_name */
291   0,  /* register_type */
292   0,  /* unwind_dummy_id */
293   -1,  /* deprecated_fp_regnum */
294   0,  /* push_dummy_call */
295   0,  /* deprecated_register_size */
296   0,  /* call_dummy_location */
297   0,  /* push_dummy_code */
298   default_print_registers_info,  /* print_registers_info */
299   0,  /* print_float_info */
300   0,  /* print_vector_info */
301   0,  /* register_sim_regno */
302   0,  /* cannot_fetch_register */
303   0,  /* cannot_store_register */
304   0,  /* get_longjmp_target */
305   0,  /* believe_pcc_promotion */
306   0,  /* convert_register_p */
307   0,  /* register_to_value */
308   0,  /* value_to_register */
309   0,  /* value_from_register */
310   0,  /* pointer_to_address */
311   0,  /* address_to_pointer */
312   0,  /* integer_to_address */
313   0,  /* return_value */
314   0,  /* extract_return_value */
315   0,  /* store_return_value */
316   0,  /* deprecated_use_struct_convention */
317   0,  /* deprecated_extract_struct_value_address */
318   0,  /* skip_prologue */
319   0,  /* inner_than */
320   0,  /* breakpoint_from_pc */
321   0,  /* adjust_breakpoint_address */
322   0,  /* memory_insert_breakpoint */
323   0,  /* memory_remove_breakpoint */
324   0,  /* decr_pc_after_break */
325   0,  /* deprecated_function_start_offset */
326   default_remote_register_number,  /* remote_register_number */
327   0,  /* fetch_tls_load_module_address */
328   0,  /* frame_args_skip */
329   0,  /* unwind_pc */
330   0,  /* unwind_sp */
331   0,  /* frame_num_args */
332   0,  /* deprecated_stack_align */
333   0,  /* frame_align */
334   0,  /* deprecated_reg_struct_has_addr */
335   default_stabs_argument_has_addr,  /* stabs_argument_has_addr */
336   0,  /* frame_red_zone_size */
337   convert_from_func_ptr_addr_identity,  /* convert_from_func_ptr_addr */
338   0,  /* addr_bits_remove */
339   0,  /* smash_text_address */
340   0,  /* software_single_step */
341   0,  /* single_step_through_delay */
342   0,  /* print_insn */
343   0,  /* skip_trampoline_code */
344   generic_skip_solib_resolver,  /* skip_solib_resolver */
345   0,  /* in_solib_return_trampoline */
346   generic_in_function_epilogue_p,  /* in_function_epilogue_p */
347   construct_inferior_arguments,  /* construct_inferior_arguments */
348   0,  /* elf_make_msymbol_special */
349   0,  /* coff_make_msymbol_special */
350   "malloc",  /* name_of_malloc */
351   0,  /* cannot_step_breakpoint */
352   0,  /* have_nonsteppable_watchpoint */
353   0,  /* address_class_type_flags */
354   0,  /* address_class_type_flags_to_name */
355   0,  /* address_class_name_to_type_flags */
356   default_register_reggroup_p,  /* register_reggroup_p */
357   0,  /* fetch_pointer_argument */
358   0,  /* regset_from_core_section */
359   0,  /* vtable_function_descriptors */
360   0,  /* vbit_in_delta */
361   0,  /* skip_permanent_breakpoint */
362   0,  /* overlay_update */
363   /* startup_gdbarch() */
364 };
365
366 struct gdbarch *current_gdbarch = &startup_gdbarch;
367
368 /* Create a new ``struct gdbarch'' based on information provided by
369    ``struct gdbarch_info''. */
370
371 struct gdbarch *
372 gdbarch_alloc (const struct gdbarch_info *info,
373                struct gdbarch_tdep *tdep)
374 {
375   /* NOTE: The new architecture variable is named ``current_gdbarch''
376      so that macros such as TARGET_DOUBLE_BIT, when expanded, refer to
377      the current local architecture and not the previous global
378      architecture.  This ensures that the new architectures initial
379      values are not influenced by the previous architecture.  Once
380      everything is parameterised with gdbarch, this will go away.  */
381   struct gdbarch *current_gdbarch;
382
383   /* Create an obstack for allocating all the per-architecture memory,
384      then use that to allocate the architecture vector.  */
385   struct obstack *obstack = XMALLOC (struct obstack);
386   obstack_init (obstack);
387   current_gdbarch = obstack_alloc (obstack, sizeof (*current_gdbarch));
388   memset (current_gdbarch, 0, sizeof (*current_gdbarch));
389   current_gdbarch->obstack = obstack;
390
391   alloc_gdbarch_data (current_gdbarch);
392
393   current_gdbarch->tdep = tdep;
394
395   current_gdbarch->bfd_arch_info = info->bfd_arch_info;
396   current_gdbarch->byte_order = info->byte_order;
397   current_gdbarch->osabi = info->osabi;
398   current_gdbarch->target_desc = info->target_desc;
399
400   /* Force the explicit initialization of these. */
401   current_gdbarch->short_bit = 2*TARGET_CHAR_BIT;
402   current_gdbarch->int_bit = 4*TARGET_CHAR_BIT;
403   current_gdbarch->long_bit = 4*TARGET_CHAR_BIT;
404   current_gdbarch->long_long_bit = 2*TARGET_LONG_BIT;
405   current_gdbarch->float_bit = 4*TARGET_CHAR_BIT;
406   current_gdbarch->double_bit = 8*TARGET_CHAR_BIT;
407   current_gdbarch->long_double_bit = 8*TARGET_CHAR_BIT;
408   current_gdbarch->ptr_bit = TARGET_INT_BIT;
409   current_gdbarch->bfd_vma_bit = TARGET_ARCHITECTURE->bits_per_address;
410   current_gdbarch->char_signed = -1;
411   current_gdbarch->write_pc = generic_target_write_pc;
412   current_gdbarch->virtual_frame_pointer = legacy_virtual_frame_pointer;
413   current_gdbarch->num_regs = -1;
414   current_gdbarch->sp_regnum = -1;
415   current_gdbarch->pc_regnum = -1;
416   current_gdbarch->ps_regnum = -1;
417   current_gdbarch->fp0_regnum = -1;
418   current_gdbarch->stab_reg_to_regnum = no_op_reg_to_regnum;
419   current_gdbarch->ecoff_reg_to_regnum = no_op_reg_to_regnum;
420   current_gdbarch->dwarf_reg_to_regnum = no_op_reg_to_regnum;
421   current_gdbarch->sdb_reg_to_regnum = no_op_reg_to_regnum;
422   current_gdbarch->dwarf2_reg_to_regnum = no_op_reg_to_regnum;
423   current_gdbarch->deprecated_fp_regnum = -1;
424   current_gdbarch->call_dummy_location = AT_ENTRY_POINT;
425   current_gdbarch->print_registers_info = default_print_registers_info;
426   current_gdbarch->register_sim_regno = legacy_register_sim_regno;
427   current_gdbarch->cannot_fetch_register = cannot_register_not;
428   current_gdbarch->cannot_store_register = cannot_register_not;
429   current_gdbarch->convert_register_p = generic_convert_register_p;
430   current_gdbarch->value_from_register = default_value_from_register;
431   current_gdbarch->pointer_to_address = unsigned_pointer_to_address;
432   current_gdbarch->address_to_pointer = unsigned_address_to_pointer;
433   current_gdbarch->return_value = legacy_return_value;
434   current_gdbarch->deprecated_use_struct_convention = generic_use_struct_convention;
435   current_gdbarch->memory_insert_breakpoint = default_memory_insert_breakpoint;
436   current_gdbarch->memory_remove_breakpoint = default_memory_remove_breakpoint;
437   current_gdbarch->remote_register_number = default_remote_register_number;
438   current_gdbarch->stabs_argument_has_addr = default_stabs_argument_has_addr;
439   current_gdbarch->convert_from_func_ptr_addr = convert_from_func_ptr_addr_identity;
440   current_gdbarch->addr_bits_remove = core_addr_identity;
441   current_gdbarch->smash_text_address = core_addr_identity;
442   current_gdbarch->skip_trampoline_code = generic_skip_trampoline_code;
443   current_gdbarch->skip_solib_resolver = generic_skip_solib_resolver;
444   current_gdbarch->in_solib_return_trampoline = generic_in_solib_return_trampoline;
445   current_gdbarch->in_function_epilogue_p = generic_in_function_epilogue_p;
446   current_gdbarch->construct_inferior_arguments = construct_inferior_arguments;
447   current_gdbarch->elf_make_msymbol_special = default_elf_make_msymbol_special;
448   current_gdbarch->coff_make_msymbol_special = default_coff_make_msymbol_special;
449   current_gdbarch->name_of_malloc = "malloc";
450   current_gdbarch->register_reggroup_p = default_register_reggroup_p;
451   /* gdbarch_alloc() */
452
453   return current_gdbarch;
454 }
455
456
457 /* Allocate extra space using the per-architecture obstack.  */
458
459 void *
460 gdbarch_obstack_zalloc (struct gdbarch *arch, long size)
461 {
462   void *data = obstack_alloc (arch->obstack, size);
463   memset (data, 0, size);
464   return data;
465 }
466
467
468 /* Free a gdbarch struct.  This should never happen in normal
469    operation --- once you've created a gdbarch, you keep it around.
470    However, if an architecture's init function encounters an error
471    building the structure, it may need to clean up a partially
472    constructed gdbarch.  */
473
474 void
475 gdbarch_free (struct gdbarch *arch)
476 {
477   struct obstack *obstack;
478   gdb_assert (arch != NULL);
479   gdb_assert (!arch->initialized_p);
480   obstack = arch->obstack;
481   obstack_free (obstack, 0); /* Includes the ARCH.  */
482   xfree (obstack);
483 }
484
485
486 /* Ensure that all values in a GDBARCH are reasonable.  */
487
488 /* NOTE/WARNING: The parameter is called ``current_gdbarch'' so that it
489    just happens to match the global variable ``current_gdbarch''.  That
490    way macros refering to that variable get the local and not the global
491    version - ulgh.  Once everything is parameterised with gdbarch, this
492    will go away. */
493
494 static void
495 verify_gdbarch (struct gdbarch *current_gdbarch)
496 {
497   struct ui_file *log;
498   struct cleanup *cleanups;
499   long dummy;
500   char *buf;
501   log = mem_fileopen ();
502   cleanups = make_cleanup_ui_file_delete (log);
503   /* fundamental */
504   if (current_gdbarch->byte_order == BFD_ENDIAN_UNKNOWN)
505     fprintf_unfiltered (log, "\n\tbyte-order");
506   if (current_gdbarch->bfd_arch_info == NULL)
507     fprintf_unfiltered (log, "\n\tbfd_arch_info");
508   /* Check those that need to be defined for the given multi-arch level. */
509   /* Skip verify of short_bit, invalid_p == 0 */
510   /* Skip verify of int_bit, invalid_p == 0 */
511   /* Skip verify of long_bit, invalid_p == 0 */
512   /* Skip verify of long_long_bit, invalid_p == 0 */
513   /* Skip verify of float_bit, invalid_p == 0 */
514   if (current_gdbarch->float_format == 0)
515     current_gdbarch->float_format = floatformats_ieee_single;
516   /* Skip verify of double_bit, invalid_p == 0 */
517   if (current_gdbarch->double_format == 0)
518     current_gdbarch->double_format = floatformats_ieee_double;
519   /* Skip verify of long_double_bit, invalid_p == 0 */
520   if (current_gdbarch->long_double_format == 0)
521     current_gdbarch->long_double_format = floatformats_ieee_double;
522   /* Skip verify of ptr_bit, invalid_p == 0 */
523   if (current_gdbarch->addr_bit == 0)
524     current_gdbarch->addr_bit = TARGET_PTR_BIT;
525   /* Skip verify of bfd_vma_bit, invalid_p == 0 */
526   if (current_gdbarch->char_signed == -1)
527     current_gdbarch->char_signed = 1;
528   /* Skip verify of read_pc, has predicate */
529   /* Skip verify of write_pc, invalid_p == 0 */
530   /* Skip verify of virtual_frame_pointer, invalid_p == 0 */
531   /* Skip verify of pseudo_register_read, has predicate */
532   /* Skip verify of pseudo_register_write, has predicate */
533   if (current_gdbarch->num_regs == -1)
534     fprintf_unfiltered (log, "\n\tnum_regs");
535   /* Skip verify of num_pseudo_regs, invalid_p == 0 */
536   /* Skip verify of sp_regnum, invalid_p == 0 */
537   /* Skip verify of pc_regnum, invalid_p == 0 */
538   /* Skip verify of ps_regnum, invalid_p == 0 */
539   /* Skip verify of fp0_regnum, invalid_p == 0 */
540   /* Skip verify of stab_reg_to_regnum, invalid_p == 0 */
541   /* Skip verify of ecoff_reg_to_regnum, invalid_p == 0 */
542   /* Skip verify of dwarf_reg_to_regnum, invalid_p == 0 */
543   /* Skip verify of sdb_reg_to_regnum, invalid_p == 0 */
544   /* Skip verify of dwarf2_reg_to_regnum, invalid_p == 0 */
545   /* Skip verify of register_type, has predicate */
546   /* Skip verify of unwind_dummy_id, has predicate */
547   /* Skip verify of deprecated_fp_regnum, invalid_p == 0 */
548   /* Skip verify of push_dummy_call, has predicate */
549   /* Skip verify of call_dummy_location, invalid_p == 0 */
550   /* Skip verify of push_dummy_code, has predicate */
551   /* Skip verify of print_registers_info, invalid_p == 0 */
552   /* Skip verify of print_float_info, has predicate */
553   /* Skip verify of print_vector_info, has predicate */
554   /* Skip verify of register_sim_regno, invalid_p == 0 */
555   /* Skip verify of cannot_fetch_register, invalid_p == 0 */
556   /* Skip verify of cannot_store_register, invalid_p == 0 */
557   /* Skip verify of get_longjmp_target, has predicate */
558   /* Skip verify of convert_register_p, invalid_p == 0 */
559   /* Skip verify of value_from_register, invalid_p == 0 */
560   /* Skip verify of pointer_to_address, invalid_p == 0 */
561   /* Skip verify of address_to_pointer, invalid_p == 0 */
562   /* Skip verify of integer_to_address, has predicate */
563   /* Skip verify of return_value, has predicate */
564   /* Skip verify of deprecated_use_struct_convention, invalid_p == 0 */
565   /* Skip verify of deprecated_extract_struct_value_address, has predicate */
566   if (current_gdbarch->skip_prologue == 0)
567     fprintf_unfiltered (log, "\n\tskip_prologue");
568   if (current_gdbarch->inner_than == 0)
569     fprintf_unfiltered (log, "\n\tinner_than");
570   if (current_gdbarch->breakpoint_from_pc == 0)
571     fprintf_unfiltered (log, "\n\tbreakpoint_from_pc");
572   /* Skip verify of adjust_breakpoint_address, has predicate */
573   /* Skip verify of memory_insert_breakpoint, invalid_p == 0 */
574   /* Skip verify of memory_remove_breakpoint, invalid_p == 0 */
575   /* Skip verify of decr_pc_after_break, invalid_p == 0 */
576   /* Skip verify of deprecated_function_start_offset, invalid_p == 0 */
577   /* Skip verify of remote_register_number, invalid_p == 0 */
578   /* Skip verify of fetch_tls_load_module_address, has predicate */
579   /* Skip verify of frame_args_skip, invalid_p == 0 */
580   /* Skip verify of unwind_pc, has predicate */
581   /* Skip verify of unwind_sp, has predicate */
582   /* Skip verify of frame_num_args, has predicate */
583   /* Skip verify of deprecated_stack_align, has predicate */
584   /* Skip verify of frame_align, has predicate */
585   /* Skip verify of deprecated_reg_struct_has_addr, has predicate */
586   /* Skip verify of stabs_argument_has_addr, invalid_p == 0 */
587   /* Skip verify of convert_from_func_ptr_addr, invalid_p == 0 */
588   /* Skip verify of addr_bits_remove, invalid_p == 0 */
589   /* Skip verify of smash_text_address, invalid_p == 0 */
590   /* Skip verify of software_single_step, has predicate */
591   /* Skip verify of single_step_through_delay, has predicate */
592   if (current_gdbarch->print_insn == 0)
593     fprintf_unfiltered (log, "\n\tprint_insn");
594   /* Skip verify of skip_trampoline_code, invalid_p == 0 */
595   /* Skip verify of skip_solib_resolver, invalid_p == 0 */
596   /* Skip verify of in_solib_return_trampoline, invalid_p == 0 */
597   /* Skip verify of in_function_epilogue_p, invalid_p == 0 */
598   /* Skip verify of construct_inferior_arguments, invalid_p == 0 */
599   /* Skip verify of elf_make_msymbol_special, invalid_p == 0 */
600   /* Skip verify of coff_make_msymbol_special, invalid_p == 0 */
601   /* Skip verify of name_of_malloc, invalid_p == 0 */
602   /* Skip verify of cannot_step_breakpoint, invalid_p == 0 */
603   /* Skip verify of have_nonsteppable_watchpoint, invalid_p == 0 */
604   /* Skip verify of address_class_type_flags, has predicate */
605   /* Skip verify of address_class_type_flags_to_name, has predicate */
606   /* Skip verify of address_class_name_to_type_flags, has predicate */
607   /* Skip verify of register_reggroup_p, invalid_p == 0 */
608   /* Skip verify of fetch_pointer_argument, has predicate */
609   /* Skip verify of regset_from_core_section, has predicate */
610   /* Skip verify of vtable_function_descriptors, invalid_p == 0 */
611   /* Skip verify of vbit_in_delta, invalid_p == 0 */
612   /* Skip verify of skip_permanent_breakpoint, has predicate */
613   /* Skip verify of overlay_update, has predicate */
614   buf = ui_file_xstrdup (log, &dummy);
615   make_cleanup (xfree, buf);
616   if (strlen (buf) > 0)
617     internal_error (__FILE__, __LINE__,
618                     _("verify_gdbarch: the following are invalid ...%s"),
619                     buf);
620   do_cleanups (cleanups);
621 }
622
623
624 /* Print out the details of the current architecture. */
625
626 /* NOTE/WARNING: The parameter is called ``current_gdbarch'' so that it
627    just happens to match the global variable ``current_gdbarch''.  That
628    way macros refering to that variable get the local and not the global
629    version - ulgh.  Once everything is parameterised with gdbarch, this
630    will go away. */
631
632 void
633 gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
634 {
635   const char *gdb_xm_file = "<not-defined>";
636   const char *gdb_nm_file = "<not-defined>";
637   const char *gdb_tm_file = "<not-defined>";
638 #if defined (GDB_XM_FILE)
639   gdb_xm_file = GDB_XM_FILE;
640 #endif
641   fprintf_unfiltered (file,
642                       "gdbarch_dump: GDB_XM_FILE = %s\n",
643                       gdb_xm_file);
644 #if defined (GDB_NM_FILE)
645   gdb_nm_file = GDB_NM_FILE;
646 #endif
647   fprintf_unfiltered (file,
648                       "gdbarch_dump: GDB_NM_FILE = %s\n",
649                       gdb_nm_file);
650 #if defined (GDB_TM_FILE)
651   gdb_tm_file = GDB_TM_FILE;
652 #endif
653   fprintf_unfiltered (file,
654                       "gdbarch_dump: GDB_TM_FILE = %s\n",
655                       gdb_tm_file);
656 #ifdef TARGET_ADDR_BIT
657   fprintf_unfiltered (file,
658                       "gdbarch_dump: TARGET_ADDR_BIT # %s\n",
659                       XSTRING (TARGET_ADDR_BIT));
660 #endif
661   fprintf_unfiltered (file,
662                       "gdbarch_dump: addr_bit = %s\n",
663                       paddr_d (current_gdbarch->addr_bit));
664   fprintf_unfiltered (file,
665                       "gdbarch_dump: addr_bits_remove = <0x%lx>\n",
666                       (long) current_gdbarch->addr_bits_remove);
667   fprintf_unfiltered (file,
668                       "gdbarch_dump: gdbarch_address_class_name_to_type_flags_p() = %d\n",
669                       gdbarch_address_class_name_to_type_flags_p (current_gdbarch));
670   fprintf_unfiltered (file,
671                       "gdbarch_dump: address_class_name_to_type_flags = <0x%lx>\n",
672                       (long) current_gdbarch->address_class_name_to_type_flags);
673   fprintf_unfiltered (file,
674                       "gdbarch_dump: gdbarch_address_class_type_flags_p() = %d\n",
675                       gdbarch_address_class_type_flags_p (current_gdbarch));
676   fprintf_unfiltered (file,
677                       "gdbarch_dump: address_class_type_flags = <0x%lx>\n",
678                       (long) current_gdbarch->address_class_type_flags);
679   fprintf_unfiltered (file,
680                       "gdbarch_dump: gdbarch_address_class_type_flags_to_name_p() = %d\n",
681                       gdbarch_address_class_type_flags_to_name_p (current_gdbarch));
682   fprintf_unfiltered (file,
683                       "gdbarch_dump: address_class_type_flags_to_name = <0x%lx>\n",
684                       (long) current_gdbarch->address_class_type_flags_to_name);
685   fprintf_unfiltered (file,
686                       "gdbarch_dump: address_to_pointer = <0x%lx>\n",
687                       (long) current_gdbarch->address_to_pointer);
688   fprintf_unfiltered (file,
689                       "gdbarch_dump: gdbarch_adjust_breakpoint_address_p() = %d\n",
690                       gdbarch_adjust_breakpoint_address_p (current_gdbarch));
691   fprintf_unfiltered (file,
692                       "gdbarch_dump: adjust_breakpoint_address = <0x%lx>\n",
693                       (long) current_gdbarch->adjust_breakpoint_address);
694 #ifdef BELIEVE_PCC_PROMOTION
695   fprintf_unfiltered (file,
696                       "gdbarch_dump: BELIEVE_PCC_PROMOTION # %s\n",
697                       XSTRING (BELIEVE_PCC_PROMOTION));
698 #endif
699   fprintf_unfiltered (file,
700                       "gdbarch_dump: believe_pcc_promotion = %s\n",
701                       paddr_d (current_gdbarch->believe_pcc_promotion));
702 #ifdef TARGET_ARCHITECTURE
703   fprintf_unfiltered (file,
704                       "gdbarch_dump: TARGET_ARCHITECTURE # %s\n",
705                       XSTRING (TARGET_ARCHITECTURE));
706 #endif
707   fprintf_unfiltered (file,
708                       "gdbarch_dump: bfd_arch_info = %s\n",
709                       TARGET_ARCHITECTURE->printable_name);
710 #ifdef TARGET_BFD_VMA_BIT
711   fprintf_unfiltered (file,
712                       "gdbarch_dump: TARGET_BFD_VMA_BIT # %s\n",
713                       XSTRING (TARGET_BFD_VMA_BIT));
714 #endif
715   fprintf_unfiltered (file,
716                       "gdbarch_dump: bfd_vma_bit = %s\n",
717                       paddr_d (current_gdbarch->bfd_vma_bit));
718 #ifdef BREAKPOINT_FROM_PC
719   fprintf_unfiltered (file,
720                       "gdbarch_dump: %s # %s\n",
721                       "BREAKPOINT_FROM_PC(pcptr, lenptr)",
722                       XSTRING (BREAKPOINT_FROM_PC (pcptr, lenptr)));
723 #endif
724   fprintf_unfiltered (file,
725                       "gdbarch_dump: breakpoint_from_pc = <0x%lx>\n",
726                       (long) current_gdbarch->breakpoint_from_pc);
727   fprintf_unfiltered (file,
728                       "gdbarch_dump: byte_order = %s\n",
729                       paddr_d (current_gdbarch->byte_order));
730   fprintf_unfiltered (file,
731                       "gdbarch_dump: call_dummy_location = %s\n",
732                       paddr_d (current_gdbarch->call_dummy_location));
733   fprintf_unfiltered (file,
734                       "gdbarch_dump: cannot_fetch_register = <0x%lx>\n",
735                       (long) current_gdbarch->cannot_fetch_register);
736   fprintf_unfiltered (file,
737                       "gdbarch_dump: cannot_step_breakpoint = %s\n",
738                       paddr_d (current_gdbarch->cannot_step_breakpoint));
739   fprintf_unfiltered (file,
740                       "gdbarch_dump: cannot_store_register = <0x%lx>\n",
741                       (long) current_gdbarch->cannot_store_register);
742   fprintf_unfiltered (file,
743                       "gdbarch_dump: char_signed = %s\n",
744                       paddr_d (current_gdbarch->char_signed));
745   fprintf_unfiltered (file,
746                       "gdbarch_dump: coff_make_msymbol_special = <0x%lx>\n",
747                       (long) current_gdbarch->coff_make_msymbol_special);
748   fprintf_unfiltered (file,
749                       "gdbarch_dump: construct_inferior_arguments = <0x%lx>\n",
750                       (long) current_gdbarch->construct_inferior_arguments);
751   fprintf_unfiltered (file,
752                       "gdbarch_dump: convert_from_func_ptr_addr = <0x%lx>\n",
753                       (long) current_gdbarch->convert_from_func_ptr_addr);
754 #ifdef CONVERT_REGISTER_P
755   fprintf_unfiltered (file,
756                       "gdbarch_dump: %s # %s\n",
757                       "CONVERT_REGISTER_P(regnum, type)",
758                       XSTRING (CONVERT_REGISTER_P (regnum, type)));
759 #endif
760   fprintf_unfiltered (file,
761                       "gdbarch_dump: convert_register_p = <0x%lx>\n",
762                       (long) current_gdbarch->convert_register_p);
763   fprintf_unfiltered (file,
764                       "gdbarch_dump: decr_pc_after_break = 0x%s\n",
765                       paddr_nz (current_gdbarch->decr_pc_after_break));
766 #ifdef DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P
767   fprintf_unfiltered (file,
768                       "gdbarch_dump: %s # %s\n",
769                       "DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P()",
770                       XSTRING (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P ()));
771 #endif
772   fprintf_unfiltered (file,
773                       "gdbarch_dump: gdbarch_deprecated_extract_struct_value_address_p() = %d\n",
774                       gdbarch_deprecated_extract_struct_value_address_p (current_gdbarch));
775 #ifdef DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS
776   fprintf_unfiltered (file,
777                       "gdbarch_dump: %s # %s\n",
778                       "DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS(regcache)",
779                       XSTRING (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS (regcache)));
780 #endif
781   fprintf_unfiltered (file,
782                       "gdbarch_dump: deprecated_extract_struct_value_address = <0x%lx>\n",
783                       (long) current_gdbarch->deprecated_extract_struct_value_address);
784 #ifdef DEPRECATED_FP_REGNUM
785   fprintf_unfiltered (file,
786                       "gdbarch_dump: DEPRECATED_FP_REGNUM # %s\n",
787                       XSTRING (DEPRECATED_FP_REGNUM));
788 #endif
789   fprintf_unfiltered (file,
790                       "gdbarch_dump: deprecated_fp_regnum = %s\n",
791                       paddr_d (current_gdbarch->deprecated_fp_regnum));
792 #ifdef DEPRECATED_FUNCTION_START_OFFSET
793   fprintf_unfiltered (file,
794                       "gdbarch_dump: DEPRECATED_FUNCTION_START_OFFSET # %s\n",
795                       XSTRING (DEPRECATED_FUNCTION_START_OFFSET));
796 #endif
797   fprintf_unfiltered (file,
798                       "gdbarch_dump: deprecated_function_start_offset = 0x%s\n",
799                       paddr_nz (current_gdbarch->deprecated_function_start_offset));
800 #ifdef DEPRECATED_REG_STRUCT_HAS_ADDR_P
801   fprintf_unfiltered (file,
802                       "gdbarch_dump: %s # %s\n",
803                       "DEPRECATED_REG_STRUCT_HAS_ADDR_P()",
804                       XSTRING (DEPRECATED_REG_STRUCT_HAS_ADDR_P ()));
805 #endif
806   fprintf_unfiltered (file,
807                       "gdbarch_dump: gdbarch_deprecated_reg_struct_has_addr_p() = %d\n",
808                       gdbarch_deprecated_reg_struct_has_addr_p (current_gdbarch));
809 #ifdef DEPRECATED_REG_STRUCT_HAS_ADDR
810   fprintf_unfiltered (file,
811                       "gdbarch_dump: %s # %s\n",
812                       "DEPRECATED_REG_STRUCT_HAS_ADDR(gcc_p, type)",
813                       XSTRING (DEPRECATED_REG_STRUCT_HAS_ADDR (gcc_p, type)));
814 #endif
815   fprintf_unfiltered (file,
816                       "gdbarch_dump: deprecated_reg_struct_has_addr = <0x%lx>\n",
817                       (long) current_gdbarch->deprecated_reg_struct_has_addr);
818 #ifdef DEPRECATED_REGISTER_SIZE
819   fprintf_unfiltered (file,
820                       "gdbarch_dump: DEPRECATED_REGISTER_SIZE # %s\n",
821                       XSTRING (DEPRECATED_REGISTER_SIZE));
822 #endif
823   fprintf_unfiltered (file,
824                       "gdbarch_dump: deprecated_register_size = %s\n",
825                       paddr_d (current_gdbarch->deprecated_register_size));
826 #ifdef DEPRECATED_STACK_ALIGN_P
827   fprintf_unfiltered (file,
828                       "gdbarch_dump: %s # %s\n",
829                       "DEPRECATED_STACK_ALIGN_P()",
830                       XSTRING (DEPRECATED_STACK_ALIGN_P ()));
831 #endif
832   fprintf_unfiltered (file,
833                       "gdbarch_dump: gdbarch_deprecated_stack_align_p() = %d\n",
834                       gdbarch_deprecated_stack_align_p (current_gdbarch));
835 #ifdef DEPRECATED_STACK_ALIGN
836   fprintf_unfiltered (file,
837                       "gdbarch_dump: %s # %s\n",
838                       "DEPRECATED_STACK_ALIGN(sp)",
839                       XSTRING (DEPRECATED_STACK_ALIGN (sp)));
840 #endif
841   fprintf_unfiltered (file,
842                       "gdbarch_dump: deprecated_stack_align = <0x%lx>\n",
843                       (long) current_gdbarch->deprecated_stack_align);
844 #ifdef DEPRECATED_USE_STRUCT_CONVENTION
845   fprintf_unfiltered (file,
846                       "gdbarch_dump: %s # %s\n",
847                       "DEPRECATED_USE_STRUCT_CONVENTION(gcc_p, value_type)",
848                       XSTRING (DEPRECATED_USE_STRUCT_CONVENTION (gcc_p, value_type)));
849 #endif
850   fprintf_unfiltered (file,
851                       "gdbarch_dump: deprecated_use_struct_convention = <0x%lx>\n",
852                       (long) current_gdbarch->deprecated_use_struct_convention);
853 #ifdef TARGET_DOUBLE_BIT
854   fprintf_unfiltered (file,
855                       "gdbarch_dump: TARGET_DOUBLE_BIT # %s\n",
856                       XSTRING (TARGET_DOUBLE_BIT));
857 #endif
858   fprintf_unfiltered (file,
859                       "gdbarch_dump: double_bit = %s\n",
860                       paddr_d (current_gdbarch->double_bit));
861 #ifdef TARGET_DOUBLE_FORMAT
862   fprintf_unfiltered (file,
863                       "gdbarch_dump: TARGET_DOUBLE_FORMAT # %s\n",
864                       XSTRING (TARGET_DOUBLE_FORMAT));
865 #endif
866   fprintf_unfiltered (file,
867                       "gdbarch_dump: double_format = %s\n",
868                       pformat (current_gdbarch->double_format));
869 #ifdef DWARF2_REG_TO_REGNUM
870   fprintf_unfiltered (file,
871                       "gdbarch_dump: %s # %s\n",
872                       "DWARF2_REG_TO_REGNUM(dwarf2_regnr)",
873                       XSTRING (DWARF2_REG_TO_REGNUM (dwarf2_regnr)));
874 #endif
875   fprintf_unfiltered (file,
876                       "gdbarch_dump: dwarf2_reg_to_regnum = <0x%lx>\n",
877                       (long) current_gdbarch->dwarf2_reg_to_regnum);
878 #ifdef DWARF_REG_TO_REGNUM
879   fprintf_unfiltered (file,
880                       "gdbarch_dump: %s # %s\n",
881                       "DWARF_REG_TO_REGNUM(dwarf_regnr)",
882                       XSTRING (DWARF_REG_TO_REGNUM (dwarf_regnr)));
883 #endif
884   fprintf_unfiltered (file,
885                       "gdbarch_dump: dwarf_reg_to_regnum = <0x%lx>\n",
886                       (long) current_gdbarch->dwarf_reg_to_regnum);
887 #ifdef ECOFF_REG_TO_REGNUM
888   fprintf_unfiltered (file,
889                       "gdbarch_dump: %s # %s\n",
890                       "ECOFF_REG_TO_REGNUM(ecoff_regnr)",
891                       XSTRING (ECOFF_REG_TO_REGNUM (ecoff_regnr)));
892 #endif
893   fprintf_unfiltered (file,
894                       "gdbarch_dump: ecoff_reg_to_regnum = <0x%lx>\n",
895                       (long) current_gdbarch->ecoff_reg_to_regnum);
896   fprintf_unfiltered (file,
897                       "gdbarch_dump: elf_make_msymbol_special = <0x%lx>\n",
898                       (long) current_gdbarch->elf_make_msymbol_special);
899 #ifdef EXTRACT_RETURN_VALUE
900   fprintf_unfiltered (file,
901                       "gdbarch_dump: %s # %s\n",
902                       "EXTRACT_RETURN_VALUE(type, regcache, valbuf)",
903                       XSTRING (EXTRACT_RETURN_VALUE (type, regcache, valbuf)));
904 #endif
905   fprintf_unfiltered (file,
906                       "gdbarch_dump: extract_return_value = <0x%lx>\n",
907                       (long) current_gdbarch->extract_return_value);
908   fprintf_unfiltered (file,
909                       "gdbarch_dump: gdbarch_fetch_pointer_argument_p() = %d\n",
910                       gdbarch_fetch_pointer_argument_p (current_gdbarch));
911   fprintf_unfiltered (file,
912                       "gdbarch_dump: fetch_pointer_argument = <0x%lx>\n",
913                       (long) current_gdbarch->fetch_pointer_argument);
914   fprintf_unfiltered (file,
915                       "gdbarch_dump: gdbarch_fetch_tls_load_module_address_p() = %d\n",
916                       gdbarch_fetch_tls_load_module_address_p (current_gdbarch));
917   fprintf_unfiltered (file,
918                       "gdbarch_dump: fetch_tls_load_module_address = <0x%lx>\n",
919                       (long) current_gdbarch->fetch_tls_load_module_address);
920 #ifdef TARGET_FLOAT_BIT
921   fprintf_unfiltered (file,
922                       "gdbarch_dump: TARGET_FLOAT_BIT # %s\n",
923                       XSTRING (TARGET_FLOAT_BIT));
924 #endif
925   fprintf_unfiltered (file,
926                       "gdbarch_dump: float_bit = %s\n",
927                       paddr_d (current_gdbarch->float_bit));
928 #ifdef TARGET_FLOAT_FORMAT
929   fprintf_unfiltered (file,
930                       "gdbarch_dump: TARGET_FLOAT_FORMAT # %s\n",
931                       XSTRING (TARGET_FLOAT_FORMAT));
932 #endif
933   fprintf_unfiltered (file,
934                       "gdbarch_dump: float_format = %s\n",
935                       pformat (current_gdbarch->float_format));
936 #ifdef FP0_REGNUM
937   fprintf_unfiltered (file,
938                       "gdbarch_dump: FP0_REGNUM # %s\n",
939                       XSTRING (FP0_REGNUM));
940 #endif
941   fprintf_unfiltered (file,
942                       "gdbarch_dump: fp0_regnum = %s\n",
943                       paddr_d (current_gdbarch->fp0_regnum));
944   fprintf_unfiltered (file,
945                       "gdbarch_dump: gdbarch_frame_align_p() = %d\n",
946                       gdbarch_frame_align_p (current_gdbarch));
947   fprintf_unfiltered (file,
948                       "gdbarch_dump: frame_align = <0x%lx>\n",
949                       (long) current_gdbarch->frame_align);
950   fprintf_unfiltered (file,
951                       "gdbarch_dump: frame_args_skip = 0x%s\n",
952                       paddr_nz (current_gdbarch->frame_args_skip));
953   fprintf_unfiltered (file,
954                       "gdbarch_dump: gdbarch_frame_num_args_p() = %d\n",
955                       gdbarch_frame_num_args_p (current_gdbarch));
956   fprintf_unfiltered (file,
957                       "gdbarch_dump: frame_num_args = <0x%lx>\n",
958                       (long) current_gdbarch->frame_num_args);
959   fprintf_unfiltered (file,
960                       "gdbarch_dump: frame_red_zone_size = %s\n",
961                       paddr_d (current_gdbarch->frame_red_zone_size));
962   fprintf_unfiltered (file,
963                       "gdbarch_dump: gdbarch_get_longjmp_target_p() = %d\n",
964                       gdbarch_get_longjmp_target_p (current_gdbarch));
965   fprintf_unfiltered (file,
966                       "gdbarch_dump: get_longjmp_target = <0x%lx>\n",
967                       (long) current_gdbarch->get_longjmp_target);
968   fprintf_unfiltered (file,
969                       "gdbarch_dump: have_nonsteppable_watchpoint = %s\n",
970                       paddr_d (current_gdbarch->have_nonsteppable_watchpoint));
971   fprintf_unfiltered (file,
972                       "gdbarch_dump: in_function_epilogue_p = <0x%lx>\n",
973                       (long) current_gdbarch->in_function_epilogue_p);
974 #ifdef IN_SOLIB_RETURN_TRAMPOLINE
975   fprintf_unfiltered (file,
976                       "gdbarch_dump: %s # %s\n",
977                       "IN_SOLIB_RETURN_TRAMPOLINE(pc, name)",
978                       XSTRING (IN_SOLIB_RETURN_TRAMPOLINE (pc, name)));
979 #endif
980   fprintf_unfiltered (file,
981                       "gdbarch_dump: in_solib_return_trampoline = <0x%lx>\n",
982                       (long) current_gdbarch->in_solib_return_trampoline);
983   fprintf_unfiltered (file,
984                       "gdbarch_dump: inner_than = <0x%lx>\n",
985                       (long) current_gdbarch->inner_than);
986 #ifdef TARGET_INT_BIT
987   fprintf_unfiltered (file,
988                       "gdbarch_dump: TARGET_INT_BIT # %s\n",
989                       XSTRING (TARGET_INT_BIT));
990 #endif
991   fprintf_unfiltered (file,
992                       "gdbarch_dump: int_bit = %s\n",
993                       paddr_d (current_gdbarch->int_bit));
994   fprintf_unfiltered (file,
995                       "gdbarch_dump: gdbarch_integer_to_address_p() = %d\n",
996                       gdbarch_integer_to_address_p (current_gdbarch));
997   fprintf_unfiltered (file,
998                       "gdbarch_dump: integer_to_address = <0x%lx>\n",
999                       (long) current_gdbarch->integer_to_address);
1000 #ifdef TARGET_LONG_BIT
1001   fprintf_unfiltered (file,
1002                       "gdbarch_dump: TARGET_LONG_BIT # %s\n",
1003                       XSTRING (TARGET_LONG_BIT));
1004 #endif
1005   fprintf_unfiltered (file,
1006                       "gdbarch_dump: long_bit = %s\n",
1007                       paddr_d (current_gdbarch->long_bit));
1008 #ifdef TARGET_LONG_DOUBLE_BIT
1009   fprintf_unfiltered (file,
1010                       "gdbarch_dump: TARGET_LONG_DOUBLE_BIT # %s\n",
1011                       XSTRING (TARGET_LONG_DOUBLE_BIT));
1012 #endif
1013   fprintf_unfiltered (file,
1014                       "gdbarch_dump: long_double_bit = %s\n",
1015                       paddr_d (current_gdbarch->long_double_bit));
1016 #ifdef TARGET_LONG_DOUBLE_FORMAT
1017   fprintf_unfiltered (file,
1018                       "gdbarch_dump: TARGET_LONG_DOUBLE_FORMAT # %s\n",
1019                       XSTRING (TARGET_LONG_DOUBLE_FORMAT));
1020 #endif
1021   fprintf_unfiltered (file,
1022                       "gdbarch_dump: long_double_format = %s\n",
1023                       pformat (current_gdbarch->long_double_format));
1024 #ifdef TARGET_LONG_LONG_BIT
1025   fprintf_unfiltered (file,
1026                       "gdbarch_dump: TARGET_LONG_LONG_BIT # %s\n",
1027                       XSTRING (TARGET_LONG_LONG_BIT));
1028 #endif
1029   fprintf_unfiltered (file,
1030                       "gdbarch_dump: long_long_bit = %s\n",
1031                       paddr_d (current_gdbarch->long_long_bit));
1032 #ifdef MEMORY_INSERT_BREAKPOINT
1033   fprintf_unfiltered (file,
1034                       "gdbarch_dump: %s # %s\n",
1035                       "MEMORY_INSERT_BREAKPOINT(bp_tgt)",
1036                       XSTRING (MEMORY_INSERT_BREAKPOINT (bp_tgt)));
1037 #endif
1038   fprintf_unfiltered (file,
1039                       "gdbarch_dump: memory_insert_breakpoint = <0x%lx>\n",
1040                       (long) current_gdbarch->memory_insert_breakpoint);
1041 #ifdef MEMORY_REMOVE_BREAKPOINT
1042   fprintf_unfiltered (file,
1043                       "gdbarch_dump: %s # %s\n",
1044                       "MEMORY_REMOVE_BREAKPOINT(bp_tgt)",
1045                       XSTRING (MEMORY_REMOVE_BREAKPOINT (bp_tgt)));
1046 #endif
1047   fprintf_unfiltered (file,
1048                       "gdbarch_dump: memory_remove_breakpoint = <0x%lx>\n",
1049                       (long) current_gdbarch->memory_remove_breakpoint);
1050 #ifdef NAME_OF_MALLOC
1051   fprintf_unfiltered (file,
1052                       "gdbarch_dump: NAME_OF_MALLOC # %s\n",
1053                       XSTRING (NAME_OF_MALLOC));
1054 #endif
1055   fprintf_unfiltered (file,
1056                       "gdbarch_dump: name_of_malloc = %s\n",
1057                       NAME_OF_MALLOC);
1058   fprintf_unfiltered (file,
1059                       "gdbarch_dump: num_pseudo_regs = %s\n",
1060                       paddr_d (current_gdbarch->num_pseudo_regs));
1061   fprintf_unfiltered (file,
1062                       "gdbarch_dump: num_regs = %s\n",
1063                       paddr_d (current_gdbarch->num_regs));
1064   fprintf_unfiltered (file,
1065                       "gdbarch_dump: osabi = %s\n",
1066                       paddr_d (current_gdbarch->osabi));
1067   fprintf_unfiltered (file,
1068                       "gdbarch_dump: gdbarch_overlay_update_p() = %d\n",
1069                       gdbarch_overlay_update_p (current_gdbarch));
1070   fprintf_unfiltered (file,
1071                       "gdbarch_dump: overlay_update = <0x%lx>\n",
1072                       (long) current_gdbarch->overlay_update);
1073 #ifdef PC_REGNUM
1074   fprintf_unfiltered (file,
1075                       "gdbarch_dump: PC_REGNUM # %s\n",
1076                       XSTRING (PC_REGNUM));
1077 #endif
1078   fprintf_unfiltered (file,
1079                       "gdbarch_dump: pc_regnum = %s\n",
1080                       paddr_d (current_gdbarch->pc_regnum));
1081   fprintf_unfiltered (file,
1082                       "gdbarch_dump: pointer_to_address = <0x%lx>\n",
1083                       (long) current_gdbarch->pointer_to_address);
1084   fprintf_unfiltered (file,
1085                       "gdbarch_dump: gdbarch_print_float_info_p() = %d\n",
1086                       gdbarch_print_float_info_p (current_gdbarch));
1087   fprintf_unfiltered (file,
1088                       "gdbarch_dump: print_float_info = <0x%lx>\n",
1089                       (long) current_gdbarch->print_float_info);
1090 #ifdef TARGET_PRINT_INSN
1091   fprintf_unfiltered (file,
1092                       "gdbarch_dump: %s # %s\n",
1093                       "TARGET_PRINT_INSN(vma, info)",
1094                       XSTRING (TARGET_PRINT_INSN (vma, info)));
1095 #endif
1096   fprintf_unfiltered (file,
1097                       "gdbarch_dump: print_insn = <0x%lx>\n",
1098                       (long) current_gdbarch->print_insn);
1099   fprintf_unfiltered (file,
1100                       "gdbarch_dump: print_registers_info = <0x%lx>\n",
1101                       (long) current_gdbarch->print_registers_info);
1102   fprintf_unfiltered (file,
1103                       "gdbarch_dump: gdbarch_print_vector_info_p() = %d\n",
1104                       gdbarch_print_vector_info_p (current_gdbarch));
1105   fprintf_unfiltered (file,
1106                       "gdbarch_dump: print_vector_info = <0x%lx>\n",
1107                       (long) current_gdbarch->print_vector_info);
1108 #ifdef PS_REGNUM
1109   fprintf_unfiltered (file,
1110                       "gdbarch_dump: PS_REGNUM # %s\n",
1111                       XSTRING (PS_REGNUM));
1112 #endif
1113   fprintf_unfiltered (file,
1114                       "gdbarch_dump: ps_regnum = %s\n",
1115                       paddr_d (current_gdbarch->ps_regnum));
1116   fprintf_unfiltered (file,
1117                       "gdbarch_dump: gdbarch_pseudo_register_read_p() = %d\n",
1118                       gdbarch_pseudo_register_read_p (current_gdbarch));
1119   fprintf_unfiltered (file,
1120                       "gdbarch_dump: pseudo_register_read = <0x%lx>\n",
1121                       (long) current_gdbarch->pseudo_register_read);
1122   fprintf_unfiltered (file,
1123                       "gdbarch_dump: gdbarch_pseudo_register_write_p() = %d\n",
1124                       gdbarch_pseudo_register_write_p (current_gdbarch));
1125   fprintf_unfiltered (file,
1126                       "gdbarch_dump: pseudo_register_write = <0x%lx>\n",
1127                       (long) current_gdbarch->pseudo_register_write);
1128 #ifdef TARGET_PTR_BIT
1129   fprintf_unfiltered (file,
1130                       "gdbarch_dump: TARGET_PTR_BIT # %s\n",
1131                       XSTRING (TARGET_PTR_BIT));
1132 #endif
1133   fprintf_unfiltered (file,
1134                       "gdbarch_dump: ptr_bit = %s\n",
1135                       paddr_d (current_gdbarch->ptr_bit));
1136   fprintf_unfiltered (file,
1137                       "gdbarch_dump: gdbarch_push_dummy_call_p() = %d\n",
1138                       gdbarch_push_dummy_call_p (current_gdbarch));
1139   fprintf_unfiltered (file,
1140                       "gdbarch_dump: push_dummy_call = <0x%lx>\n",
1141                       (long) current_gdbarch->push_dummy_call);
1142   fprintf_unfiltered (file,
1143                       "gdbarch_dump: gdbarch_push_dummy_code_p() = %d\n",
1144                       gdbarch_push_dummy_code_p (current_gdbarch));
1145   fprintf_unfiltered (file,
1146                       "gdbarch_dump: push_dummy_code = <0x%lx>\n",
1147                       (long) current_gdbarch->push_dummy_code);
1148 #ifdef TARGET_READ_PC_P
1149   fprintf_unfiltered (file,
1150                       "gdbarch_dump: %s # %s\n",
1151                       "TARGET_READ_PC_P()",
1152                       XSTRING (TARGET_READ_PC_P ()));
1153 #endif
1154   fprintf_unfiltered (file,
1155                       "gdbarch_dump: gdbarch_read_pc_p() = %d\n",
1156                       gdbarch_read_pc_p (current_gdbarch));
1157 #ifdef TARGET_READ_PC
1158   fprintf_unfiltered (file,
1159                       "gdbarch_dump: %s # %s\n",
1160                       "TARGET_READ_PC(ptid)",
1161                       XSTRING (TARGET_READ_PC (ptid)));
1162 #endif
1163   fprintf_unfiltered (file,
1164                       "gdbarch_dump: read_pc = <0x%lx>\n",
1165                       (long) current_gdbarch->read_pc);
1166   fprintf_unfiltered (file,
1167                       "gdbarch_dump: register_name = <0x%lx>\n",
1168                       (long) current_gdbarch->register_name);
1169   fprintf_unfiltered (file,
1170                       "gdbarch_dump: register_reggroup_p = <0x%lx>\n",
1171                       (long) current_gdbarch->register_reggroup_p);
1172 #ifdef REGISTER_SIM_REGNO
1173   fprintf_unfiltered (file,
1174                       "gdbarch_dump: %s # %s\n",
1175                       "REGISTER_SIM_REGNO(reg_nr)",
1176                       XSTRING (REGISTER_SIM_REGNO (reg_nr)));
1177 #endif
1178   fprintf_unfiltered (file,
1179                       "gdbarch_dump: register_sim_regno = <0x%lx>\n",
1180                       (long) current_gdbarch->register_sim_regno);
1181 #ifdef REGISTER_TO_VALUE
1182   fprintf_unfiltered (file,
1183                       "gdbarch_dump: %s # %s\n",
1184                       "REGISTER_TO_VALUE(frame, regnum, type, buf)",
1185                       XSTRING (REGISTER_TO_VALUE (frame, regnum, type, buf)));
1186 #endif
1187   fprintf_unfiltered (file,
1188                       "gdbarch_dump: register_to_value = <0x%lx>\n",
1189                       (long) current_gdbarch->register_to_value);
1190   fprintf_unfiltered (file,
1191                       "gdbarch_dump: gdbarch_register_type_p() = %d\n",
1192                       gdbarch_register_type_p (current_gdbarch));
1193   fprintf_unfiltered (file,
1194                       "gdbarch_dump: register_type = <0x%lx>\n",
1195                       (long) current_gdbarch->register_type);
1196   fprintf_unfiltered (file,
1197                       "gdbarch_dump: gdbarch_regset_from_core_section_p() = %d\n",
1198                       gdbarch_regset_from_core_section_p (current_gdbarch));
1199   fprintf_unfiltered (file,
1200                       "gdbarch_dump: regset_from_core_section = <0x%lx>\n",
1201                       (long) current_gdbarch->regset_from_core_section);
1202   fprintf_unfiltered (file,
1203                       "gdbarch_dump: remote_register_number = <0x%lx>\n",
1204                       (long) current_gdbarch->remote_register_number);
1205   fprintf_unfiltered (file,
1206                       "gdbarch_dump: gdbarch_return_value_p() = %d\n",
1207                       gdbarch_return_value_p (current_gdbarch));
1208   fprintf_unfiltered (file,
1209                       "gdbarch_dump: return_value = <0x%lx>\n",
1210                       (long) current_gdbarch->return_value);
1211 #ifdef SDB_REG_TO_REGNUM
1212   fprintf_unfiltered (file,
1213                       "gdbarch_dump: %s # %s\n",
1214                       "SDB_REG_TO_REGNUM(sdb_regnr)",
1215                       XSTRING (SDB_REG_TO_REGNUM (sdb_regnr)));
1216 #endif
1217   fprintf_unfiltered (file,
1218                       "gdbarch_dump: sdb_reg_to_regnum = <0x%lx>\n",
1219                       (long) current_gdbarch->sdb_reg_to_regnum);
1220 #ifdef TARGET_SHORT_BIT
1221   fprintf_unfiltered (file,
1222                       "gdbarch_dump: TARGET_SHORT_BIT # %s\n",
1223                       XSTRING (TARGET_SHORT_BIT));
1224 #endif
1225   fprintf_unfiltered (file,
1226                       "gdbarch_dump: short_bit = %s\n",
1227                       paddr_d (current_gdbarch->short_bit));
1228   fprintf_unfiltered (file,
1229                       "gdbarch_dump: gdbarch_single_step_through_delay_p() = %d\n",
1230                       gdbarch_single_step_through_delay_p (current_gdbarch));
1231   fprintf_unfiltered (file,
1232                       "gdbarch_dump: single_step_through_delay = <0x%lx>\n",
1233                       (long) current_gdbarch->single_step_through_delay);
1234   fprintf_unfiltered (file,
1235                       "gdbarch_dump: gdbarch_skip_permanent_breakpoint_p() = %d\n",
1236                       gdbarch_skip_permanent_breakpoint_p (current_gdbarch));
1237   fprintf_unfiltered (file,
1238                       "gdbarch_dump: skip_permanent_breakpoint = <0x%lx>\n",
1239                       (long) current_gdbarch->skip_permanent_breakpoint);
1240 #ifdef SKIP_PROLOGUE
1241   fprintf_unfiltered (file,
1242                       "gdbarch_dump: %s # %s\n",
1243                       "SKIP_PROLOGUE(ip)",
1244                       XSTRING (SKIP_PROLOGUE (ip)));
1245 #endif
1246   fprintf_unfiltered (file,
1247                       "gdbarch_dump: skip_prologue = <0x%lx>\n",
1248                       (long) current_gdbarch->skip_prologue);
1249   fprintf_unfiltered (file,
1250                       "gdbarch_dump: skip_solib_resolver = <0x%lx>\n",
1251                       (long) current_gdbarch->skip_solib_resolver);
1252 #ifdef SKIP_TRAMPOLINE_CODE
1253   fprintf_unfiltered (file,
1254                       "gdbarch_dump: %s # %s\n",
1255                       "SKIP_TRAMPOLINE_CODE(pc)",
1256                       XSTRING (SKIP_TRAMPOLINE_CODE (pc)));
1257 #endif
1258   fprintf_unfiltered (file,
1259                       "gdbarch_dump: skip_trampoline_code = <0x%lx>\n",
1260                       (long) current_gdbarch->skip_trampoline_code);
1261 #ifdef SMASH_TEXT_ADDRESS
1262   fprintf_unfiltered (file,
1263                       "gdbarch_dump: %s # %s\n",
1264                       "SMASH_TEXT_ADDRESS(addr)",
1265                       XSTRING (SMASH_TEXT_ADDRESS (addr)));
1266 #endif
1267   fprintf_unfiltered (file,
1268                       "gdbarch_dump: smash_text_address = <0x%lx>\n",
1269                       (long) current_gdbarch->smash_text_address);
1270 #ifdef SOFTWARE_SINGLE_STEP_P
1271   fprintf_unfiltered (file,
1272                       "gdbarch_dump: %s # %s\n",
1273                       "SOFTWARE_SINGLE_STEP_P()",
1274                       XSTRING (SOFTWARE_SINGLE_STEP_P ()));
1275 #endif
1276   fprintf_unfiltered (file,
1277                       "gdbarch_dump: gdbarch_software_single_step_p() = %d\n",
1278                       gdbarch_software_single_step_p (current_gdbarch));
1279 #ifdef SOFTWARE_SINGLE_STEP
1280   fprintf_unfiltered (file,
1281                       "gdbarch_dump: %s # %s\n",
1282                       "SOFTWARE_SINGLE_STEP(regcache)",
1283                       XSTRING (SOFTWARE_SINGLE_STEP (regcache)));
1284 #endif
1285   fprintf_unfiltered (file,
1286                       "gdbarch_dump: software_single_step = <0x%lx>\n",
1287                       (long) current_gdbarch->software_single_step);
1288 #ifdef SP_REGNUM
1289   fprintf_unfiltered (file,
1290                       "gdbarch_dump: SP_REGNUM # %s\n",
1291                       XSTRING (SP_REGNUM));
1292 #endif
1293   fprintf_unfiltered (file,
1294                       "gdbarch_dump: sp_regnum = %s\n",
1295                       paddr_d (current_gdbarch->sp_regnum));
1296 #ifdef STAB_REG_TO_REGNUM
1297   fprintf_unfiltered (file,
1298                       "gdbarch_dump: %s # %s\n",
1299                       "STAB_REG_TO_REGNUM(stab_regnr)",
1300                       XSTRING (STAB_REG_TO_REGNUM (stab_regnr)));
1301 #endif
1302   fprintf_unfiltered (file,
1303                       "gdbarch_dump: stab_reg_to_regnum = <0x%lx>\n",
1304                       (long) current_gdbarch->stab_reg_to_regnum);
1305   fprintf_unfiltered (file,
1306                       "gdbarch_dump: stabs_argument_has_addr = <0x%lx>\n",
1307                       (long) current_gdbarch->stabs_argument_has_addr);
1308 #ifdef STORE_RETURN_VALUE
1309   fprintf_unfiltered (file,
1310                       "gdbarch_dump: %s # %s\n",
1311                       "STORE_RETURN_VALUE(type, regcache, valbuf)",
1312                       XSTRING (STORE_RETURN_VALUE (type, regcache, valbuf)));
1313 #endif
1314   fprintf_unfiltered (file,
1315                       "gdbarch_dump: store_return_value = <0x%lx>\n",
1316                       (long) current_gdbarch->store_return_value);
1317   fprintf_unfiltered (file,
1318                       "gdbarch_dump: target_desc = %s\n",
1319                       paddr_d ((long) current_gdbarch->target_desc));
1320   fprintf_unfiltered (file,
1321                       "gdbarch_dump: gdbarch_unwind_dummy_id_p() = %d\n",
1322                       gdbarch_unwind_dummy_id_p (current_gdbarch));
1323   fprintf_unfiltered (file,
1324                       "gdbarch_dump: unwind_dummy_id = <0x%lx>\n",
1325                       (long) current_gdbarch->unwind_dummy_id);
1326   fprintf_unfiltered (file,
1327                       "gdbarch_dump: gdbarch_unwind_pc_p() = %d\n",
1328                       gdbarch_unwind_pc_p (current_gdbarch));
1329   fprintf_unfiltered (file,
1330                       "gdbarch_dump: unwind_pc = <0x%lx>\n",
1331                       (long) current_gdbarch->unwind_pc);
1332   fprintf_unfiltered (file,
1333                       "gdbarch_dump: gdbarch_unwind_sp_p() = %d\n",
1334                       gdbarch_unwind_sp_p (current_gdbarch));
1335   fprintf_unfiltered (file,
1336                       "gdbarch_dump: unwind_sp = <0x%lx>\n",
1337                       (long) current_gdbarch->unwind_sp);
1338   fprintf_unfiltered (file,
1339                       "gdbarch_dump: value_from_register = <0x%lx>\n",
1340                       (long) current_gdbarch->value_from_register);
1341 #ifdef VALUE_TO_REGISTER
1342   fprintf_unfiltered (file,
1343                       "gdbarch_dump: %s # %s\n",
1344                       "VALUE_TO_REGISTER(frame, regnum, type, buf)",
1345                       XSTRING (VALUE_TO_REGISTER (frame, regnum, type, buf)));
1346 #endif
1347   fprintf_unfiltered (file,
1348                       "gdbarch_dump: value_to_register = <0x%lx>\n",
1349                       (long) current_gdbarch->value_to_register);
1350   fprintf_unfiltered (file,
1351                       "gdbarch_dump: vbit_in_delta = %s\n",
1352                       paddr_d (current_gdbarch->vbit_in_delta));
1353 #ifdef TARGET_VIRTUAL_FRAME_POINTER
1354   fprintf_unfiltered (file,
1355                       "gdbarch_dump: %s # %s\n",
1356                       "TARGET_VIRTUAL_FRAME_POINTER(pc, frame_regnum, frame_offset)",
1357                       XSTRING (TARGET_VIRTUAL_FRAME_POINTER (pc, frame_regnum, frame_offset)));
1358 #endif
1359   fprintf_unfiltered (file,
1360                       "gdbarch_dump: virtual_frame_pointer = <0x%lx>\n",
1361                       (long) current_gdbarch->virtual_frame_pointer);
1362   fprintf_unfiltered (file,
1363                       "gdbarch_dump: vtable_function_descriptors = %s\n",
1364                       paddr_d (current_gdbarch->vtable_function_descriptors));
1365 #ifdef TARGET_WRITE_PC
1366   fprintf_unfiltered (file,
1367                       "gdbarch_dump: %s # %s\n",
1368                       "TARGET_WRITE_PC(val, ptid)",
1369                       XSTRING (TARGET_WRITE_PC (val, ptid)));
1370 #endif
1371   fprintf_unfiltered (file,
1372                       "gdbarch_dump: write_pc = <0x%lx>\n",
1373                       (long) current_gdbarch->write_pc);
1374   if (current_gdbarch->dump_tdep != NULL)
1375     current_gdbarch->dump_tdep (current_gdbarch, file);
1376 }
1377
1378 struct gdbarch_tdep *
1379 gdbarch_tdep (struct gdbarch *gdbarch)
1380 {
1381   if (gdbarch_debug >= 2)
1382     fprintf_unfiltered (gdb_stdlog, "gdbarch_tdep called\n");
1383   return gdbarch->tdep;
1384 }
1385
1386
1387 const struct bfd_arch_info *
1388 gdbarch_bfd_arch_info (struct gdbarch *gdbarch)
1389 {
1390   gdb_assert (gdbarch != NULL);
1391   if (gdbarch_debug >= 2)
1392     fprintf_unfiltered (gdb_stdlog, "gdbarch_bfd_arch_info called\n");
1393   return gdbarch->bfd_arch_info;
1394 }
1395
1396 int
1397 gdbarch_byte_order (struct gdbarch *gdbarch)
1398 {
1399   gdb_assert (gdbarch != NULL);
1400   if (gdbarch_debug >= 2)
1401     fprintf_unfiltered (gdb_stdlog, "gdbarch_byte_order called\n");
1402   return gdbarch->byte_order;
1403 }
1404
1405 enum gdb_osabi
1406 gdbarch_osabi (struct gdbarch *gdbarch)
1407 {
1408   gdb_assert (gdbarch != NULL);
1409   if (gdbarch_debug >= 2)
1410     fprintf_unfiltered (gdb_stdlog, "gdbarch_osabi called\n");
1411   return gdbarch->osabi;
1412 }
1413
1414 const struct target_desc *
1415 gdbarch_target_desc (struct gdbarch *gdbarch)
1416 {
1417   gdb_assert (gdbarch != NULL);
1418   if (gdbarch_debug >= 2)
1419     fprintf_unfiltered (gdb_stdlog, "gdbarch_target_desc called\n");
1420   return gdbarch->target_desc;
1421 }
1422
1423 int
1424 gdbarch_short_bit (struct gdbarch *gdbarch)
1425 {
1426   gdb_assert (gdbarch != NULL);
1427   /* Skip verify of short_bit, invalid_p == 0 */
1428   if (gdbarch_debug >= 2)
1429     fprintf_unfiltered (gdb_stdlog, "gdbarch_short_bit called\n");
1430   return gdbarch->short_bit;
1431 }
1432
1433 void
1434 set_gdbarch_short_bit (struct gdbarch *gdbarch,
1435                        int short_bit)
1436 {
1437   gdbarch->short_bit = short_bit;
1438 }
1439
1440 int
1441 gdbarch_int_bit (struct gdbarch *gdbarch)
1442 {
1443   gdb_assert (gdbarch != NULL);
1444   /* Skip verify of int_bit, invalid_p == 0 */
1445   if (gdbarch_debug >= 2)
1446     fprintf_unfiltered (gdb_stdlog, "gdbarch_int_bit called\n");
1447   return gdbarch->int_bit;
1448 }
1449
1450 void
1451 set_gdbarch_int_bit (struct gdbarch *gdbarch,
1452                      int int_bit)
1453 {
1454   gdbarch->int_bit = int_bit;
1455 }
1456
1457 int
1458 gdbarch_long_bit (struct gdbarch *gdbarch)
1459 {
1460   gdb_assert (gdbarch != NULL);
1461   /* Skip verify of long_bit, invalid_p == 0 */
1462   if (gdbarch_debug >= 2)
1463     fprintf_unfiltered (gdb_stdlog, "gdbarch_long_bit called\n");
1464   return gdbarch->long_bit;
1465 }
1466
1467 void
1468 set_gdbarch_long_bit (struct gdbarch *gdbarch,
1469                       int long_bit)
1470 {
1471   gdbarch->long_bit = long_bit;
1472 }
1473
1474 int
1475 gdbarch_long_long_bit (struct gdbarch *gdbarch)
1476 {
1477   gdb_assert (gdbarch != NULL);
1478   /* Skip verify of long_long_bit, invalid_p == 0 */
1479   if (gdbarch_debug >= 2)
1480     fprintf_unfiltered (gdb_stdlog, "gdbarch_long_long_bit called\n");
1481   return gdbarch->long_long_bit;
1482 }
1483
1484 void
1485 set_gdbarch_long_long_bit (struct gdbarch *gdbarch,
1486                            int long_long_bit)
1487 {
1488   gdbarch->long_long_bit = long_long_bit;
1489 }
1490
1491 int
1492 gdbarch_float_bit (struct gdbarch *gdbarch)
1493 {
1494   gdb_assert (gdbarch != NULL);
1495   /* Skip verify of float_bit, invalid_p == 0 */
1496   if (gdbarch_debug >= 2)
1497     fprintf_unfiltered (gdb_stdlog, "gdbarch_float_bit called\n");
1498   return gdbarch->float_bit;
1499 }
1500
1501 void
1502 set_gdbarch_float_bit (struct gdbarch *gdbarch,
1503                        int float_bit)
1504 {
1505   gdbarch->float_bit = float_bit;
1506 }
1507
1508 const struct floatformat **
1509 gdbarch_float_format (struct gdbarch *gdbarch)
1510 {
1511   gdb_assert (gdbarch != NULL);
1512   if (gdbarch_debug >= 2)
1513     fprintf_unfiltered (gdb_stdlog, "gdbarch_float_format called\n");
1514   return gdbarch->float_format;
1515 }
1516
1517 void
1518 set_gdbarch_float_format (struct gdbarch *gdbarch,
1519                           const struct floatformat ** float_format)
1520 {
1521   gdbarch->float_format = float_format;
1522 }
1523
1524 int
1525 gdbarch_double_bit (struct gdbarch *gdbarch)
1526 {
1527   gdb_assert (gdbarch != NULL);
1528   /* Skip verify of double_bit, invalid_p == 0 */
1529   if (gdbarch_debug >= 2)
1530     fprintf_unfiltered (gdb_stdlog, "gdbarch_double_bit called\n");
1531   return gdbarch->double_bit;
1532 }
1533
1534 void
1535 set_gdbarch_double_bit (struct gdbarch *gdbarch,
1536                         int double_bit)
1537 {
1538   gdbarch->double_bit = double_bit;
1539 }
1540
1541 const struct floatformat **
1542 gdbarch_double_format (struct gdbarch *gdbarch)
1543 {
1544   gdb_assert (gdbarch != NULL);
1545   if (gdbarch_debug >= 2)
1546     fprintf_unfiltered (gdb_stdlog, "gdbarch_double_format called\n");
1547   return gdbarch->double_format;
1548 }
1549
1550 void
1551 set_gdbarch_double_format (struct gdbarch *gdbarch,
1552                            const struct floatformat ** double_format)
1553 {
1554   gdbarch->double_format = double_format;
1555 }
1556
1557 int
1558 gdbarch_long_double_bit (struct gdbarch *gdbarch)
1559 {
1560   gdb_assert (gdbarch != NULL);
1561   /* Skip verify of long_double_bit, invalid_p == 0 */
1562   if (gdbarch_debug >= 2)
1563     fprintf_unfiltered (gdb_stdlog, "gdbarch_long_double_bit called\n");
1564   return gdbarch->long_double_bit;
1565 }
1566
1567 void
1568 set_gdbarch_long_double_bit (struct gdbarch *gdbarch,
1569                              int long_double_bit)
1570 {
1571   gdbarch->long_double_bit = long_double_bit;
1572 }
1573
1574 const struct floatformat **
1575 gdbarch_long_double_format (struct gdbarch *gdbarch)
1576 {
1577   gdb_assert (gdbarch != NULL);
1578   if (gdbarch_debug >= 2)
1579     fprintf_unfiltered (gdb_stdlog, "gdbarch_long_double_format called\n");
1580   return gdbarch->long_double_format;
1581 }
1582
1583 void
1584 set_gdbarch_long_double_format (struct gdbarch *gdbarch,
1585                                 const struct floatformat ** long_double_format)
1586 {
1587   gdbarch->long_double_format = long_double_format;
1588 }
1589
1590 int
1591 gdbarch_ptr_bit (struct gdbarch *gdbarch)
1592 {
1593   gdb_assert (gdbarch != NULL);
1594   /* Skip verify of ptr_bit, invalid_p == 0 */
1595   if (gdbarch_debug >= 2)
1596     fprintf_unfiltered (gdb_stdlog, "gdbarch_ptr_bit called\n");
1597   return gdbarch->ptr_bit;
1598 }
1599
1600 void
1601 set_gdbarch_ptr_bit (struct gdbarch *gdbarch,
1602                      int ptr_bit)
1603 {
1604   gdbarch->ptr_bit = ptr_bit;
1605 }
1606
1607 int
1608 gdbarch_addr_bit (struct gdbarch *gdbarch)
1609 {
1610   gdb_assert (gdbarch != NULL);
1611   /* Check variable changed from pre-default.  */
1612   gdb_assert (gdbarch->addr_bit != 0);
1613   if (gdbarch_debug >= 2)
1614     fprintf_unfiltered (gdb_stdlog, "gdbarch_addr_bit called\n");
1615   return gdbarch->addr_bit;
1616 }
1617
1618 void
1619 set_gdbarch_addr_bit (struct gdbarch *gdbarch,
1620                       int addr_bit)
1621 {
1622   gdbarch->addr_bit = addr_bit;
1623 }
1624
1625 int
1626 gdbarch_bfd_vma_bit (struct gdbarch *gdbarch)
1627 {
1628   gdb_assert (gdbarch != NULL);
1629   /* Skip verify of bfd_vma_bit, invalid_p == 0 */
1630   if (gdbarch_debug >= 2)
1631     fprintf_unfiltered (gdb_stdlog, "gdbarch_bfd_vma_bit called\n");
1632   return gdbarch->bfd_vma_bit;
1633 }
1634
1635 void
1636 set_gdbarch_bfd_vma_bit (struct gdbarch *gdbarch,
1637                          int bfd_vma_bit)
1638 {
1639   gdbarch->bfd_vma_bit = bfd_vma_bit;
1640 }
1641
1642 int
1643 gdbarch_char_signed (struct gdbarch *gdbarch)
1644 {
1645   gdb_assert (gdbarch != NULL);
1646   /* Check variable changed from pre-default.  */
1647   gdb_assert (gdbarch->char_signed != -1);
1648   if (gdbarch_debug >= 2)
1649     fprintf_unfiltered (gdb_stdlog, "gdbarch_char_signed called\n");
1650   return gdbarch->char_signed;
1651 }
1652
1653 void
1654 set_gdbarch_char_signed (struct gdbarch *gdbarch,
1655                          int char_signed)
1656 {
1657   gdbarch->char_signed = char_signed;
1658 }
1659
1660 int
1661 gdbarch_read_pc_p (struct gdbarch *gdbarch)
1662 {
1663   gdb_assert (gdbarch != NULL);
1664   return gdbarch->read_pc != NULL;
1665 }
1666
1667 CORE_ADDR
1668 gdbarch_read_pc (struct gdbarch *gdbarch, ptid_t ptid)
1669 {
1670   gdb_assert (gdbarch != NULL);
1671   gdb_assert (gdbarch->read_pc != NULL);
1672   if (gdbarch_debug >= 2)
1673     fprintf_unfiltered (gdb_stdlog, "gdbarch_read_pc called\n");
1674   return gdbarch->read_pc (ptid);
1675 }
1676
1677 void
1678 set_gdbarch_read_pc (struct gdbarch *gdbarch,
1679                      gdbarch_read_pc_ftype read_pc)
1680 {
1681   gdbarch->read_pc = read_pc;
1682 }
1683
1684 void
1685 gdbarch_write_pc (struct gdbarch *gdbarch, CORE_ADDR val, ptid_t ptid)
1686 {
1687   gdb_assert (gdbarch != NULL);
1688   gdb_assert (gdbarch->write_pc != NULL);
1689   if (gdbarch_debug >= 2)
1690     fprintf_unfiltered (gdb_stdlog, "gdbarch_write_pc called\n");
1691   gdbarch->write_pc (val, ptid);
1692 }
1693
1694 void
1695 set_gdbarch_write_pc (struct gdbarch *gdbarch,
1696                       gdbarch_write_pc_ftype write_pc)
1697 {
1698   gdbarch->write_pc = write_pc;
1699 }
1700
1701 void
1702 gdbarch_virtual_frame_pointer (struct gdbarch *gdbarch, CORE_ADDR pc, int *frame_regnum, LONGEST *frame_offset)
1703 {
1704   gdb_assert (gdbarch != NULL);
1705   gdb_assert (gdbarch->virtual_frame_pointer != NULL);
1706   if (gdbarch_debug >= 2)
1707     fprintf_unfiltered (gdb_stdlog, "gdbarch_virtual_frame_pointer called\n");
1708   gdbarch->virtual_frame_pointer (pc, frame_regnum, frame_offset);
1709 }
1710
1711 void
1712 set_gdbarch_virtual_frame_pointer (struct gdbarch *gdbarch,
1713                                    gdbarch_virtual_frame_pointer_ftype virtual_frame_pointer)
1714 {
1715   gdbarch->virtual_frame_pointer = virtual_frame_pointer;
1716 }
1717
1718 int
1719 gdbarch_pseudo_register_read_p (struct gdbarch *gdbarch)
1720 {
1721   gdb_assert (gdbarch != NULL);
1722   return gdbarch->pseudo_register_read != NULL;
1723 }
1724
1725 void
1726 gdbarch_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, gdb_byte *buf)
1727 {
1728   gdb_assert (gdbarch != NULL);
1729   gdb_assert (gdbarch->pseudo_register_read != NULL);
1730   if (gdbarch_debug >= 2)
1731     fprintf_unfiltered (gdb_stdlog, "gdbarch_pseudo_register_read called\n");
1732   gdbarch->pseudo_register_read (gdbarch, regcache, cookednum, buf);
1733 }
1734
1735 void
1736 set_gdbarch_pseudo_register_read (struct gdbarch *gdbarch,
1737                                   gdbarch_pseudo_register_read_ftype pseudo_register_read)
1738 {
1739   gdbarch->pseudo_register_read = pseudo_register_read;
1740 }
1741
1742 int
1743 gdbarch_pseudo_register_write_p (struct gdbarch *gdbarch)
1744 {
1745   gdb_assert (gdbarch != NULL);
1746   return gdbarch->pseudo_register_write != NULL;
1747 }
1748
1749 void
1750 gdbarch_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, const gdb_byte *buf)
1751 {
1752   gdb_assert (gdbarch != NULL);
1753   gdb_assert (gdbarch->pseudo_register_write != NULL);
1754   if (gdbarch_debug >= 2)
1755     fprintf_unfiltered (gdb_stdlog, "gdbarch_pseudo_register_write called\n");
1756   gdbarch->pseudo_register_write (gdbarch, regcache, cookednum, buf);
1757 }
1758
1759 void
1760 set_gdbarch_pseudo_register_write (struct gdbarch *gdbarch,
1761                                    gdbarch_pseudo_register_write_ftype pseudo_register_write)
1762 {
1763   gdbarch->pseudo_register_write = pseudo_register_write;
1764 }
1765
1766 int
1767 gdbarch_num_regs (struct gdbarch *gdbarch)
1768 {
1769   gdb_assert (gdbarch != NULL);
1770   /* Check variable changed from pre-default.  */
1771   gdb_assert (gdbarch->num_regs != -1);
1772   if (gdbarch_debug >= 2)
1773     fprintf_unfiltered (gdb_stdlog, "gdbarch_num_regs called\n");
1774   return gdbarch->num_regs;
1775 }
1776
1777 void
1778 set_gdbarch_num_regs (struct gdbarch *gdbarch,
1779                       int num_regs)
1780 {
1781   gdbarch->num_regs = num_regs;
1782 }
1783
1784 int
1785 gdbarch_num_pseudo_regs (struct gdbarch *gdbarch)
1786 {
1787   gdb_assert (gdbarch != NULL);
1788   /* Skip verify of num_pseudo_regs, invalid_p == 0 */
1789   if (gdbarch_debug >= 2)
1790     fprintf_unfiltered (gdb_stdlog, "gdbarch_num_pseudo_regs called\n");
1791   return gdbarch->num_pseudo_regs;
1792 }
1793
1794 void
1795 set_gdbarch_num_pseudo_regs (struct gdbarch *gdbarch,
1796                              int num_pseudo_regs)
1797 {
1798   gdbarch->num_pseudo_regs = num_pseudo_regs;
1799 }
1800
1801 int
1802 gdbarch_sp_regnum (struct gdbarch *gdbarch)
1803 {
1804   gdb_assert (gdbarch != NULL);
1805   /* Skip verify of sp_regnum, invalid_p == 0 */
1806   if (gdbarch_debug >= 2)
1807     fprintf_unfiltered (gdb_stdlog, "gdbarch_sp_regnum called\n");
1808   return gdbarch->sp_regnum;
1809 }
1810
1811 void
1812 set_gdbarch_sp_regnum (struct gdbarch *gdbarch,
1813                        int sp_regnum)
1814 {
1815   gdbarch->sp_regnum = sp_regnum;
1816 }
1817
1818 int
1819 gdbarch_pc_regnum (struct gdbarch *gdbarch)
1820 {
1821   gdb_assert (gdbarch != NULL);
1822   /* Skip verify of pc_regnum, invalid_p == 0 */
1823   if (gdbarch_debug >= 2)
1824     fprintf_unfiltered (gdb_stdlog, "gdbarch_pc_regnum called\n");
1825   return gdbarch->pc_regnum;
1826 }
1827
1828 void
1829 set_gdbarch_pc_regnum (struct gdbarch *gdbarch,
1830                        int pc_regnum)
1831 {
1832   gdbarch->pc_regnum = pc_regnum;
1833 }
1834
1835 int
1836 gdbarch_ps_regnum (struct gdbarch *gdbarch)
1837 {
1838   gdb_assert (gdbarch != NULL);
1839   /* Skip verify of ps_regnum, invalid_p == 0 */
1840   if (gdbarch_debug >= 2)
1841     fprintf_unfiltered (gdb_stdlog, "gdbarch_ps_regnum called\n");
1842   return gdbarch->ps_regnum;
1843 }
1844
1845 void
1846 set_gdbarch_ps_regnum (struct gdbarch *gdbarch,
1847                        int ps_regnum)
1848 {
1849   gdbarch->ps_regnum = ps_regnum;
1850 }
1851
1852 int
1853 gdbarch_fp0_regnum (struct gdbarch *gdbarch)
1854 {
1855   gdb_assert (gdbarch != NULL);
1856   /* Skip verify of fp0_regnum, invalid_p == 0 */
1857   if (gdbarch_debug >= 2)
1858     fprintf_unfiltered (gdb_stdlog, "gdbarch_fp0_regnum called\n");
1859   return gdbarch->fp0_regnum;
1860 }
1861
1862 void
1863 set_gdbarch_fp0_regnum (struct gdbarch *gdbarch,
1864                         int fp0_regnum)
1865 {
1866   gdbarch->fp0_regnum = fp0_regnum;
1867 }
1868
1869 int
1870 gdbarch_stab_reg_to_regnum (struct gdbarch *gdbarch, int stab_regnr)
1871 {
1872   gdb_assert (gdbarch != NULL);
1873   gdb_assert (gdbarch->stab_reg_to_regnum != NULL);
1874   if (gdbarch_debug >= 2)
1875     fprintf_unfiltered (gdb_stdlog, "gdbarch_stab_reg_to_regnum called\n");
1876   return gdbarch->stab_reg_to_regnum (stab_regnr);
1877 }
1878
1879 void
1880 set_gdbarch_stab_reg_to_regnum (struct gdbarch *gdbarch,
1881                                 gdbarch_stab_reg_to_regnum_ftype stab_reg_to_regnum)
1882 {
1883   gdbarch->stab_reg_to_regnum = stab_reg_to_regnum;
1884 }
1885
1886 int
1887 gdbarch_ecoff_reg_to_regnum (struct gdbarch *gdbarch, int ecoff_regnr)
1888 {
1889   gdb_assert (gdbarch != NULL);
1890   gdb_assert (gdbarch->ecoff_reg_to_regnum != NULL);
1891   if (gdbarch_debug >= 2)
1892     fprintf_unfiltered (gdb_stdlog, "gdbarch_ecoff_reg_to_regnum called\n");
1893   return gdbarch->ecoff_reg_to_regnum (ecoff_regnr);
1894 }
1895
1896 void
1897 set_gdbarch_ecoff_reg_to_regnum (struct gdbarch *gdbarch,
1898                                  gdbarch_ecoff_reg_to_regnum_ftype ecoff_reg_to_regnum)
1899 {
1900   gdbarch->ecoff_reg_to_regnum = ecoff_reg_to_regnum;
1901 }
1902
1903 int
1904 gdbarch_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int dwarf_regnr)
1905 {
1906   gdb_assert (gdbarch != NULL);
1907   gdb_assert (gdbarch->dwarf_reg_to_regnum != NULL);
1908   if (gdbarch_debug >= 2)
1909     fprintf_unfiltered (gdb_stdlog, "gdbarch_dwarf_reg_to_regnum called\n");
1910   return gdbarch->dwarf_reg_to_regnum (dwarf_regnr);
1911 }
1912
1913 void
1914 set_gdbarch_dwarf_reg_to_regnum (struct gdbarch *gdbarch,
1915                                  gdbarch_dwarf_reg_to_regnum_ftype dwarf_reg_to_regnum)
1916 {
1917   gdbarch->dwarf_reg_to_regnum = dwarf_reg_to_regnum;
1918 }
1919
1920 int
1921 gdbarch_sdb_reg_to_regnum (struct gdbarch *gdbarch, int sdb_regnr)
1922 {
1923   gdb_assert (gdbarch != NULL);
1924   gdb_assert (gdbarch->sdb_reg_to_regnum != NULL);
1925   if (gdbarch_debug >= 2)
1926     fprintf_unfiltered (gdb_stdlog, "gdbarch_sdb_reg_to_regnum called\n");
1927   return gdbarch->sdb_reg_to_regnum (sdb_regnr);
1928 }
1929
1930 void
1931 set_gdbarch_sdb_reg_to_regnum (struct gdbarch *gdbarch,
1932                                gdbarch_sdb_reg_to_regnum_ftype sdb_reg_to_regnum)
1933 {
1934   gdbarch->sdb_reg_to_regnum = sdb_reg_to_regnum;
1935 }
1936
1937 int
1938 gdbarch_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int dwarf2_regnr)
1939 {
1940   gdb_assert (gdbarch != NULL);
1941   gdb_assert (gdbarch->dwarf2_reg_to_regnum != NULL);
1942   if (gdbarch_debug >= 2)
1943     fprintf_unfiltered (gdb_stdlog, "gdbarch_dwarf2_reg_to_regnum called\n");
1944   return gdbarch->dwarf2_reg_to_regnum (dwarf2_regnr);
1945 }
1946
1947 void
1948 set_gdbarch_dwarf2_reg_to_regnum (struct gdbarch *gdbarch,
1949                                   gdbarch_dwarf2_reg_to_regnum_ftype dwarf2_reg_to_regnum)
1950 {
1951   gdbarch->dwarf2_reg_to_regnum = dwarf2_reg_to_regnum;
1952 }
1953
1954 const char *
1955 gdbarch_register_name (struct gdbarch *gdbarch, int regnr)
1956 {
1957   gdb_assert (gdbarch != NULL);
1958   gdb_assert (gdbarch->register_name != NULL);
1959   if (gdbarch_debug >= 2)
1960     fprintf_unfiltered (gdb_stdlog, "gdbarch_register_name called\n");
1961   return gdbarch->register_name (regnr);
1962 }
1963
1964 void
1965 set_gdbarch_register_name (struct gdbarch *gdbarch,
1966                            gdbarch_register_name_ftype register_name)
1967 {
1968   gdbarch->register_name = register_name;
1969 }
1970
1971 int
1972 gdbarch_register_type_p (struct gdbarch *gdbarch)
1973 {
1974   gdb_assert (gdbarch != NULL);
1975   return gdbarch->register_type != NULL;
1976 }
1977
1978 struct type *
1979 gdbarch_register_type (struct gdbarch *gdbarch, int reg_nr)
1980 {
1981   gdb_assert (gdbarch != NULL);
1982   gdb_assert (gdbarch->register_type != NULL);
1983   if (gdbarch_debug >= 2)
1984     fprintf_unfiltered (gdb_stdlog, "gdbarch_register_type called\n");
1985   return gdbarch->register_type (gdbarch, reg_nr);
1986 }
1987
1988 void
1989 set_gdbarch_register_type (struct gdbarch *gdbarch,
1990                            gdbarch_register_type_ftype register_type)
1991 {
1992   gdbarch->register_type = register_type;
1993 }
1994
1995 int
1996 gdbarch_unwind_dummy_id_p (struct gdbarch *gdbarch)
1997 {
1998   gdb_assert (gdbarch != NULL);
1999   return gdbarch->unwind_dummy_id != NULL;
2000 }
2001
2002 struct frame_id
2003 gdbarch_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *info)
2004 {
2005   gdb_assert (gdbarch != NULL);
2006   gdb_assert (gdbarch->unwind_dummy_id != NULL);
2007   if (gdbarch_debug >= 2)
2008     fprintf_unfiltered (gdb_stdlog, "gdbarch_unwind_dummy_id called\n");
2009   return gdbarch->unwind_dummy_id (gdbarch, info);
2010 }
2011
2012 void
2013 set_gdbarch_unwind_dummy_id (struct gdbarch *gdbarch,
2014                              gdbarch_unwind_dummy_id_ftype unwind_dummy_id)
2015 {
2016   gdbarch->unwind_dummy_id = unwind_dummy_id;
2017 }
2018
2019 int
2020 gdbarch_deprecated_fp_regnum (struct gdbarch *gdbarch)
2021 {
2022   gdb_assert (gdbarch != NULL);
2023   /* Skip verify of deprecated_fp_regnum, invalid_p == 0 */
2024   if (gdbarch_debug >= 2)
2025     fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_fp_regnum called\n");
2026   return gdbarch->deprecated_fp_regnum;
2027 }
2028
2029 void
2030 set_gdbarch_deprecated_fp_regnum (struct gdbarch *gdbarch,
2031                                   int deprecated_fp_regnum)
2032 {
2033   gdbarch->deprecated_fp_regnum = deprecated_fp_regnum;
2034 }
2035
2036 int
2037 gdbarch_push_dummy_call_p (struct gdbarch *gdbarch)
2038 {
2039   gdb_assert (gdbarch != NULL);
2040   return gdbarch->push_dummy_call != NULL;
2041 }
2042
2043 CORE_ADDR
2044 gdbarch_push_dummy_call (struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr)
2045 {
2046   gdb_assert (gdbarch != NULL);
2047   gdb_assert (gdbarch->push_dummy_call != NULL);
2048   if (gdbarch_debug >= 2)
2049     fprintf_unfiltered (gdb_stdlog, "gdbarch_push_dummy_call called\n");
2050   return gdbarch->push_dummy_call (gdbarch, function, regcache, bp_addr, nargs, args, sp, struct_return, struct_addr);
2051 }
2052
2053 void
2054 set_gdbarch_push_dummy_call (struct gdbarch *gdbarch,
2055                              gdbarch_push_dummy_call_ftype push_dummy_call)
2056 {
2057   gdbarch->push_dummy_call = push_dummy_call;
2058 }
2059
2060 int
2061 gdbarch_deprecated_register_size (struct gdbarch *gdbarch)
2062 {
2063   gdb_assert (gdbarch != NULL);
2064   if (gdbarch_debug >= 2)
2065     fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_register_size called\n");
2066   return gdbarch->deprecated_register_size;
2067 }
2068
2069 void
2070 set_gdbarch_deprecated_register_size (struct gdbarch *gdbarch,
2071                                       int deprecated_register_size)
2072 {
2073   gdbarch->deprecated_register_size = deprecated_register_size;
2074 }
2075
2076 int
2077 gdbarch_call_dummy_location (struct gdbarch *gdbarch)
2078 {
2079   gdb_assert (gdbarch != NULL);
2080   /* Skip verify of call_dummy_location, invalid_p == 0 */
2081   if (gdbarch_debug >= 2)
2082     fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_location called\n");
2083   return gdbarch->call_dummy_location;
2084 }
2085
2086 void
2087 set_gdbarch_call_dummy_location (struct gdbarch *gdbarch,
2088                                  int call_dummy_location)
2089 {
2090   gdbarch->call_dummy_location = call_dummy_location;
2091 }
2092
2093 int
2094 gdbarch_push_dummy_code_p (struct gdbarch *gdbarch)
2095 {
2096   gdb_assert (gdbarch != NULL);
2097   return gdbarch->push_dummy_code != NULL;
2098 }
2099
2100 CORE_ADDR
2101 gdbarch_push_dummy_code (struct gdbarch *gdbarch, CORE_ADDR sp, CORE_ADDR funaddr, int using_gcc, struct value **args, int nargs, struct type *value_type, CORE_ADDR *real_pc, CORE_ADDR *bp_addr)
2102 {
2103   gdb_assert (gdbarch != NULL);
2104   gdb_assert (gdbarch->push_dummy_code != NULL);
2105   if (gdbarch_debug >= 2)
2106     fprintf_unfiltered (gdb_stdlog, "gdbarch_push_dummy_code called\n");
2107   return gdbarch->push_dummy_code (gdbarch, sp, funaddr, using_gcc, args, nargs, value_type, real_pc, bp_addr);
2108 }
2109
2110 void
2111 set_gdbarch_push_dummy_code (struct gdbarch *gdbarch,
2112                              gdbarch_push_dummy_code_ftype push_dummy_code)
2113 {
2114   gdbarch->push_dummy_code = push_dummy_code;
2115 }
2116
2117 void
2118 gdbarch_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, int regnum, int all)
2119 {
2120   gdb_assert (gdbarch != NULL);
2121   gdb_assert (gdbarch->print_registers_info != NULL);
2122   if (gdbarch_debug >= 2)
2123     fprintf_unfiltered (gdb_stdlog, "gdbarch_print_registers_info called\n");
2124   gdbarch->print_registers_info (gdbarch, file, frame, regnum, all);
2125 }
2126
2127 void
2128 set_gdbarch_print_registers_info (struct gdbarch *gdbarch,
2129                                   gdbarch_print_registers_info_ftype print_registers_info)
2130 {
2131   gdbarch->print_registers_info = print_registers_info;
2132 }
2133
2134 int
2135 gdbarch_print_float_info_p (struct gdbarch *gdbarch)
2136 {
2137   gdb_assert (gdbarch != NULL);
2138   return gdbarch->print_float_info != NULL;
2139 }
2140
2141 void
2142 gdbarch_print_float_info (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, const char *args)
2143 {
2144   gdb_assert (gdbarch != NULL);
2145   gdb_assert (gdbarch->print_float_info != NULL);
2146   if (gdbarch_debug >= 2)
2147     fprintf_unfiltered (gdb_stdlog, "gdbarch_print_float_info called\n");
2148   gdbarch->print_float_info (gdbarch, file, frame, args);
2149 }
2150
2151 void
2152 set_gdbarch_print_float_info (struct gdbarch *gdbarch,
2153                               gdbarch_print_float_info_ftype print_float_info)
2154 {
2155   gdbarch->print_float_info = print_float_info;
2156 }
2157
2158 int
2159 gdbarch_print_vector_info_p (struct gdbarch *gdbarch)
2160 {
2161   gdb_assert (gdbarch != NULL);
2162   return gdbarch->print_vector_info != NULL;
2163 }
2164
2165 void
2166 gdbarch_print_vector_info (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, const char *args)
2167 {
2168   gdb_assert (gdbarch != NULL);
2169   gdb_assert (gdbarch->print_vector_info != NULL);
2170   if (gdbarch_debug >= 2)
2171     fprintf_unfiltered (gdb_stdlog, "gdbarch_print_vector_info called\n");
2172   gdbarch->print_vector_info (gdbarch, file, frame, args);
2173 }
2174
2175 void
2176 set_gdbarch_print_vector_info (struct gdbarch *gdbarch,
2177                                gdbarch_print_vector_info_ftype print_vector_info)
2178 {
2179   gdbarch->print_vector_info = print_vector_info;
2180 }
2181
2182 int
2183 gdbarch_register_sim_regno (struct gdbarch *gdbarch, int reg_nr)
2184 {
2185   gdb_assert (gdbarch != NULL);
2186   gdb_assert (gdbarch->register_sim_regno != NULL);
2187   if (gdbarch_debug >= 2)
2188     fprintf_unfiltered (gdb_stdlog, "gdbarch_register_sim_regno called\n");
2189   return gdbarch->register_sim_regno (reg_nr);
2190 }
2191
2192 void
2193 set_gdbarch_register_sim_regno (struct gdbarch *gdbarch,
2194                                 gdbarch_register_sim_regno_ftype register_sim_regno)
2195 {
2196   gdbarch->register_sim_regno = register_sim_regno;
2197 }
2198
2199 int
2200 gdbarch_cannot_fetch_register (struct gdbarch *gdbarch, int regnum)
2201 {
2202   gdb_assert (gdbarch != NULL);
2203   gdb_assert (gdbarch->cannot_fetch_register != NULL);
2204   if (gdbarch_debug >= 2)
2205     fprintf_unfiltered (gdb_stdlog, "gdbarch_cannot_fetch_register called\n");
2206   return gdbarch->cannot_fetch_register (regnum);
2207 }
2208
2209 void
2210 set_gdbarch_cannot_fetch_register (struct gdbarch *gdbarch,
2211                                    gdbarch_cannot_fetch_register_ftype cannot_fetch_register)
2212 {
2213   gdbarch->cannot_fetch_register = cannot_fetch_register;
2214 }
2215
2216 int
2217 gdbarch_cannot_store_register (struct gdbarch *gdbarch, int regnum)
2218 {
2219   gdb_assert (gdbarch != NULL);
2220   gdb_assert (gdbarch->cannot_store_register != NULL);
2221   if (gdbarch_debug >= 2)
2222     fprintf_unfiltered (gdb_stdlog, "gdbarch_cannot_store_register called\n");
2223   return gdbarch->cannot_store_register (regnum);
2224 }
2225
2226 void
2227 set_gdbarch_cannot_store_register (struct gdbarch *gdbarch,
2228                                    gdbarch_cannot_store_register_ftype cannot_store_register)
2229 {
2230   gdbarch->cannot_store_register = cannot_store_register;
2231 }
2232
2233 int
2234 gdbarch_get_longjmp_target_p (struct gdbarch *gdbarch)
2235 {
2236   gdb_assert (gdbarch != NULL);
2237   return gdbarch->get_longjmp_target != NULL;
2238 }
2239
2240 int
2241 gdbarch_get_longjmp_target (struct gdbarch *gdbarch, CORE_ADDR *pc)
2242 {
2243   gdb_assert (gdbarch != NULL);
2244   gdb_assert (gdbarch->get_longjmp_target != NULL);
2245   if (gdbarch_debug >= 2)
2246     fprintf_unfiltered (gdb_stdlog, "gdbarch_get_longjmp_target called\n");
2247   return gdbarch->get_longjmp_target (pc);
2248 }
2249
2250 void
2251 set_gdbarch_get_longjmp_target (struct gdbarch *gdbarch,
2252                                 gdbarch_get_longjmp_target_ftype get_longjmp_target)
2253 {
2254   gdbarch->get_longjmp_target = get_longjmp_target;
2255 }
2256
2257 int
2258 gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch)
2259 {
2260   gdb_assert (gdbarch != NULL);
2261   if (gdbarch_debug >= 2)
2262     fprintf_unfiltered (gdb_stdlog, "gdbarch_believe_pcc_promotion called\n");
2263   return gdbarch->believe_pcc_promotion;
2264 }
2265
2266 void
2267 set_gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch,
2268                                    int believe_pcc_promotion)
2269 {
2270   gdbarch->believe_pcc_promotion = believe_pcc_promotion;
2271 }
2272
2273 int
2274 gdbarch_convert_register_p (struct gdbarch *gdbarch, int regnum, struct type *type)
2275 {
2276   gdb_assert (gdbarch != NULL);
2277   gdb_assert (gdbarch->convert_register_p != NULL);
2278   if (gdbarch_debug >= 2)
2279     fprintf_unfiltered (gdb_stdlog, "gdbarch_convert_register_p called\n");
2280   return gdbarch->convert_register_p (regnum, type);
2281 }
2282
2283 void
2284 set_gdbarch_convert_register_p (struct gdbarch *gdbarch,
2285                                 gdbarch_convert_register_p_ftype convert_register_p)
2286 {
2287   gdbarch->convert_register_p = convert_register_p;
2288 }
2289
2290 void
2291 gdbarch_register_to_value (struct gdbarch *gdbarch, struct frame_info *frame, int regnum, struct type *type, gdb_byte *buf)
2292 {
2293   gdb_assert (gdbarch != NULL);
2294   gdb_assert (gdbarch->register_to_value != NULL);
2295   if (gdbarch_debug >= 2)
2296     fprintf_unfiltered (gdb_stdlog, "gdbarch_register_to_value called\n");
2297   gdbarch->register_to_value (frame, regnum, type, buf);
2298 }
2299
2300 void
2301 set_gdbarch_register_to_value (struct gdbarch *gdbarch,
2302                                gdbarch_register_to_value_ftype register_to_value)
2303 {
2304   gdbarch->register_to_value = register_to_value;
2305 }
2306
2307 void
2308 gdbarch_value_to_register (struct gdbarch *gdbarch, struct frame_info *frame, int regnum, struct type *type, const gdb_byte *buf)
2309 {
2310   gdb_assert (gdbarch != NULL);
2311   gdb_assert (gdbarch->value_to_register != NULL);
2312   if (gdbarch_debug >= 2)
2313     fprintf_unfiltered (gdb_stdlog, "gdbarch_value_to_register called\n");
2314   gdbarch->value_to_register (frame, regnum, type, buf);
2315 }
2316
2317 void
2318 set_gdbarch_value_to_register (struct gdbarch *gdbarch,
2319                                gdbarch_value_to_register_ftype value_to_register)
2320 {
2321   gdbarch->value_to_register = value_to_register;
2322 }
2323
2324 struct value *
2325 gdbarch_value_from_register (struct gdbarch *gdbarch, struct type *type, int regnum, struct frame_info *frame)
2326 {
2327   gdb_assert (gdbarch != NULL);
2328   gdb_assert (gdbarch->value_from_register != NULL);
2329   if (gdbarch_debug >= 2)
2330     fprintf_unfiltered (gdb_stdlog, "gdbarch_value_from_register called\n");
2331   return gdbarch->value_from_register (type, regnum, frame);
2332 }
2333
2334 void
2335 set_gdbarch_value_from_register (struct gdbarch *gdbarch,
2336                                  gdbarch_value_from_register_ftype value_from_register)
2337 {
2338   gdbarch->value_from_register = value_from_register;
2339 }
2340
2341 CORE_ADDR
2342 gdbarch_pointer_to_address (struct gdbarch *gdbarch, struct type *type, const gdb_byte *buf)
2343 {
2344   gdb_assert (gdbarch != NULL);
2345   gdb_assert (gdbarch->pointer_to_address != NULL);
2346   if (gdbarch_debug >= 2)
2347     fprintf_unfiltered (gdb_stdlog, "gdbarch_pointer_to_address called\n");
2348   return gdbarch->pointer_to_address (type, buf);
2349 }
2350
2351 void
2352 set_gdbarch_pointer_to_address (struct gdbarch *gdbarch,
2353                                 gdbarch_pointer_to_address_ftype pointer_to_address)
2354 {
2355   gdbarch->pointer_to_address = pointer_to_address;
2356 }
2357
2358 void
2359 gdbarch_address_to_pointer (struct gdbarch *gdbarch, struct type *type, gdb_byte *buf, CORE_ADDR addr)
2360 {
2361   gdb_assert (gdbarch != NULL);
2362   gdb_assert (gdbarch->address_to_pointer != NULL);
2363   if (gdbarch_debug >= 2)
2364     fprintf_unfiltered (gdb_stdlog, "gdbarch_address_to_pointer called\n");
2365   gdbarch->address_to_pointer (type, buf, addr);
2366 }
2367
2368 void
2369 set_gdbarch_address_to_pointer (struct gdbarch *gdbarch,
2370                                 gdbarch_address_to_pointer_ftype address_to_pointer)
2371 {
2372   gdbarch->address_to_pointer = address_to_pointer;
2373 }
2374
2375 int
2376 gdbarch_integer_to_address_p (struct gdbarch *gdbarch)
2377 {
2378   gdb_assert (gdbarch != NULL);
2379   return gdbarch->integer_to_address != NULL;
2380 }
2381
2382 CORE_ADDR
2383 gdbarch_integer_to_address (struct gdbarch *gdbarch, struct type *type, const gdb_byte *buf)
2384 {
2385   gdb_assert (gdbarch != NULL);
2386   gdb_assert (gdbarch->integer_to_address != NULL);
2387   if (gdbarch_debug >= 2)
2388     fprintf_unfiltered (gdb_stdlog, "gdbarch_integer_to_address called\n");
2389   return gdbarch->integer_to_address (gdbarch, type, buf);
2390 }
2391
2392 void
2393 set_gdbarch_integer_to_address (struct gdbarch *gdbarch,
2394                                 gdbarch_integer_to_address_ftype integer_to_address)
2395 {
2396   gdbarch->integer_to_address = integer_to_address;
2397 }
2398
2399 int
2400 gdbarch_return_value_p (struct gdbarch *gdbarch)
2401 {
2402   gdb_assert (gdbarch != NULL);
2403   return gdbarch->return_value != legacy_return_value;
2404 }
2405
2406 enum return_value_convention
2407 gdbarch_return_value (struct gdbarch *gdbarch, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
2408 {
2409   gdb_assert (gdbarch != NULL);
2410   gdb_assert (gdbarch->return_value != NULL);
2411   /* Do not check predicate: gdbarch->return_value != legacy_return_value, allow call.  */
2412   if (gdbarch_debug >= 2)
2413     fprintf_unfiltered (gdb_stdlog, "gdbarch_return_value called\n");
2414   return gdbarch->return_value (gdbarch, valtype, regcache, readbuf, writebuf);
2415 }
2416
2417 void
2418 set_gdbarch_return_value (struct gdbarch *gdbarch,
2419                           gdbarch_return_value_ftype return_value)
2420 {
2421   gdbarch->return_value = return_value;
2422 }
2423
2424 void
2425 gdbarch_extract_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, gdb_byte *valbuf)
2426 {
2427   gdb_assert (gdbarch != NULL);
2428   gdb_assert (gdbarch->extract_return_value != NULL);
2429   if (gdbarch_debug >= 2)
2430     fprintf_unfiltered (gdb_stdlog, "gdbarch_extract_return_value called\n");
2431   gdbarch->extract_return_value (type, regcache, valbuf);
2432 }
2433
2434 void
2435 set_gdbarch_extract_return_value (struct gdbarch *gdbarch,
2436                                   gdbarch_extract_return_value_ftype extract_return_value)
2437 {
2438   gdbarch->extract_return_value = extract_return_value;
2439 }
2440
2441 void
2442 gdbarch_store_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, const gdb_byte *valbuf)
2443 {
2444   gdb_assert (gdbarch != NULL);
2445   gdb_assert (gdbarch->store_return_value != NULL);
2446   if (gdbarch_debug >= 2)
2447     fprintf_unfiltered (gdb_stdlog, "gdbarch_store_return_value called\n");
2448   gdbarch->store_return_value (type, regcache, valbuf);
2449 }
2450
2451 void
2452 set_gdbarch_store_return_value (struct gdbarch *gdbarch,
2453                                 gdbarch_store_return_value_ftype store_return_value)
2454 {
2455   gdbarch->store_return_value = store_return_value;
2456 }
2457
2458 int
2459 gdbarch_deprecated_use_struct_convention (struct gdbarch *gdbarch, int gcc_p, struct type *value_type)
2460 {
2461   gdb_assert (gdbarch != NULL);
2462   gdb_assert (gdbarch->deprecated_use_struct_convention != NULL);
2463   if (gdbarch_debug >= 2)
2464     fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_use_struct_convention called\n");
2465   return gdbarch->deprecated_use_struct_convention (gcc_p, value_type);
2466 }
2467
2468 void
2469 set_gdbarch_deprecated_use_struct_convention (struct gdbarch *gdbarch,
2470                                               gdbarch_deprecated_use_struct_convention_ftype deprecated_use_struct_convention)
2471 {
2472   gdbarch->deprecated_use_struct_convention = deprecated_use_struct_convention;
2473 }
2474
2475 int
2476 gdbarch_deprecated_extract_struct_value_address_p (struct gdbarch *gdbarch)
2477 {
2478   gdb_assert (gdbarch != NULL);
2479   return gdbarch->deprecated_extract_struct_value_address != NULL;
2480 }
2481
2482 CORE_ADDR
2483 gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch, struct regcache *regcache)
2484 {
2485   gdb_assert (gdbarch != NULL);
2486   gdb_assert (gdbarch->deprecated_extract_struct_value_address != NULL);
2487   if (gdbarch_debug >= 2)
2488     fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_extract_struct_value_address called\n");
2489   return gdbarch->deprecated_extract_struct_value_address (regcache);
2490 }
2491
2492 void
2493 set_gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch,
2494                                                      gdbarch_deprecated_extract_struct_value_address_ftype deprecated_extract_struct_value_address)
2495 {
2496   gdbarch->deprecated_extract_struct_value_address = deprecated_extract_struct_value_address;
2497 }
2498
2499 CORE_ADDR
2500 gdbarch_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR ip)
2501 {
2502   gdb_assert (gdbarch != NULL);
2503   gdb_assert (gdbarch->skip_prologue != NULL);
2504   if (gdbarch_debug >= 2)
2505     fprintf_unfiltered (gdb_stdlog, "gdbarch_skip_prologue called\n");
2506   return gdbarch->skip_prologue (ip);
2507 }
2508
2509 void
2510 set_gdbarch_skip_prologue (struct gdbarch *gdbarch,
2511                            gdbarch_skip_prologue_ftype skip_prologue)
2512 {
2513   gdbarch->skip_prologue = skip_prologue;
2514 }
2515
2516 int
2517 gdbarch_inner_than (struct gdbarch *gdbarch, CORE_ADDR lhs, CORE_ADDR rhs)
2518 {
2519   gdb_assert (gdbarch != NULL);
2520   gdb_assert (gdbarch->inner_than != NULL);
2521   if (gdbarch_debug >= 2)
2522     fprintf_unfiltered (gdb_stdlog, "gdbarch_inner_than called\n");
2523   return gdbarch->inner_than (lhs, rhs);
2524 }
2525
2526 void
2527 set_gdbarch_inner_than (struct gdbarch *gdbarch,
2528                         gdbarch_inner_than_ftype inner_than)
2529 {
2530   gdbarch->inner_than = inner_than;
2531 }
2532
2533 const gdb_byte *
2534 gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr)
2535 {
2536   gdb_assert (gdbarch != NULL);
2537   gdb_assert (gdbarch->breakpoint_from_pc != NULL);
2538   if (gdbarch_debug >= 2)
2539     fprintf_unfiltered (gdb_stdlog, "gdbarch_breakpoint_from_pc called\n");
2540   return gdbarch->breakpoint_from_pc (pcptr, lenptr);
2541 }
2542
2543 void
2544 set_gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch,
2545                                 gdbarch_breakpoint_from_pc_ftype breakpoint_from_pc)
2546 {
2547   gdbarch->breakpoint_from_pc = breakpoint_from_pc;
2548 }
2549
2550 int
2551 gdbarch_adjust_breakpoint_address_p (struct gdbarch *gdbarch)
2552 {
2553   gdb_assert (gdbarch != NULL);
2554   return gdbarch->adjust_breakpoint_address != NULL;
2555 }
2556
2557 CORE_ADDR
2558 gdbarch_adjust_breakpoint_address (struct gdbarch *gdbarch, CORE_ADDR bpaddr)
2559 {
2560   gdb_assert (gdbarch != NULL);
2561   gdb_assert (gdbarch->adjust_breakpoint_address != NULL);
2562   if (gdbarch_debug >= 2)
2563     fprintf_unfiltered (gdb_stdlog, "gdbarch_adjust_breakpoint_address called\n");
2564   return gdbarch->adjust_breakpoint_address (gdbarch, bpaddr);
2565 }
2566
2567 void
2568 set_gdbarch_adjust_breakpoint_address (struct gdbarch *gdbarch,
2569                                        gdbarch_adjust_breakpoint_address_ftype adjust_breakpoint_address)
2570 {
2571   gdbarch->adjust_breakpoint_address = adjust_breakpoint_address;
2572 }
2573
2574 int
2575 gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
2576 {
2577   gdb_assert (gdbarch != NULL);
2578   gdb_assert (gdbarch->memory_insert_breakpoint != NULL);
2579   if (gdbarch_debug >= 2)
2580     fprintf_unfiltered (gdb_stdlog, "gdbarch_memory_insert_breakpoint called\n");
2581   return gdbarch->memory_insert_breakpoint (bp_tgt);
2582 }
2583
2584 void
2585 set_gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch,
2586                                       gdbarch_memory_insert_breakpoint_ftype memory_insert_breakpoint)
2587 {
2588   gdbarch->memory_insert_breakpoint = memory_insert_breakpoint;
2589 }
2590
2591 int
2592 gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
2593 {
2594   gdb_assert (gdbarch != NULL);
2595   gdb_assert (gdbarch->memory_remove_breakpoint != NULL);
2596   if (gdbarch_debug >= 2)
2597     fprintf_unfiltered (gdb_stdlog, "gdbarch_memory_remove_breakpoint called\n");
2598   return gdbarch->memory_remove_breakpoint (bp_tgt);
2599 }
2600
2601 void
2602 set_gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch,
2603                                       gdbarch_memory_remove_breakpoint_ftype memory_remove_breakpoint)
2604 {
2605   gdbarch->memory_remove_breakpoint = memory_remove_breakpoint;
2606 }
2607
2608 CORE_ADDR
2609 gdbarch_decr_pc_after_break (struct gdbarch *gdbarch)
2610 {
2611   gdb_assert (gdbarch != NULL);
2612   /* Skip verify of decr_pc_after_break, invalid_p == 0 */
2613   if (gdbarch_debug >= 2)
2614     fprintf_unfiltered (gdb_stdlog, "gdbarch_decr_pc_after_break called\n");
2615   return gdbarch->decr_pc_after_break;
2616 }
2617
2618 void
2619 set_gdbarch_decr_pc_after_break (struct gdbarch *gdbarch,
2620                                  CORE_ADDR decr_pc_after_break)
2621 {
2622   gdbarch->decr_pc_after_break = decr_pc_after_break;
2623 }
2624
2625 CORE_ADDR
2626 gdbarch_deprecated_function_start_offset (struct gdbarch *gdbarch)
2627 {
2628   gdb_assert (gdbarch != NULL);
2629   /* Skip verify of deprecated_function_start_offset, invalid_p == 0 */
2630   if (gdbarch_debug >= 2)
2631     fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_function_start_offset called\n");
2632   return gdbarch->deprecated_function_start_offset;
2633 }
2634
2635 void
2636 set_gdbarch_deprecated_function_start_offset (struct gdbarch *gdbarch,
2637                                               CORE_ADDR deprecated_function_start_offset)
2638 {
2639   gdbarch->deprecated_function_start_offset = deprecated_function_start_offset;
2640 }
2641
2642 int
2643 gdbarch_remote_register_number (struct gdbarch *gdbarch, int regno)
2644 {
2645   gdb_assert (gdbarch != NULL);
2646   gdb_assert (gdbarch->remote_register_number != NULL);
2647   if (gdbarch_debug >= 2)
2648     fprintf_unfiltered (gdb_stdlog, "gdbarch_remote_register_number called\n");
2649   return gdbarch->remote_register_number (gdbarch, regno);
2650 }
2651
2652 void
2653 set_gdbarch_remote_register_number (struct gdbarch *gdbarch,
2654                                     gdbarch_remote_register_number_ftype remote_register_number)
2655 {
2656   gdbarch->remote_register_number = remote_register_number;
2657 }
2658
2659 int
2660 gdbarch_fetch_tls_load_module_address_p (struct gdbarch *gdbarch)
2661 {
2662   gdb_assert (gdbarch != NULL);
2663   return gdbarch->fetch_tls_load_module_address != NULL;
2664 }
2665
2666 CORE_ADDR
2667 gdbarch_fetch_tls_load_module_address (struct gdbarch *gdbarch, struct objfile *objfile)
2668 {
2669   gdb_assert (gdbarch != NULL);
2670   gdb_assert (gdbarch->fetch_tls_load_module_address != NULL);
2671   if (gdbarch_debug >= 2)
2672     fprintf_unfiltered (gdb_stdlog, "gdbarch_fetch_tls_load_module_address called\n");
2673   return gdbarch->fetch_tls_load_module_address (objfile);
2674 }
2675
2676 void
2677 set_gdbarch_fetch_tls_load_module_address (struct gdbarch *gdbarch,
2678                                            gdbarch_fetch_tls_load_module_address_ftype fetch_tls_load_module_address)
2679 {
2680   gdbarch->fetch_tls_load_module_address = fetch_tls_load_module_address;
2681 }
2682
2683 CORE_ADDR
2684 gdbarch_frame_args_skip (struct gdbarch *gdbarch)
2685 {
2686   gdb_assert (gdbarch != NULL);
2687   /* Skip verify of frame_args_skip, invalid_p == 0 */
2688   if (gdbarch_debug >= 2)
2689     fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_args_skip called\n");
2690   return gdbarch->frame_args_skip;
2691 }
2692
2693 void
2694 set_gdbarch_frame_args_skip (struct gdbarch *gdbarch,
2695                              CORE_ADDR frame_args_skip)
2696 {
2697   gdbarch->frame_args_skip = frame_args_skip;
2698 }
2699
2700 int
2701 gdbarch_unwind_pc_p (struct gdbarch *gdbarch)
2702 {
2703   gdb_assert (gdbarch != NULL);
2704   return gdbarch->unwind_pc != NULL;
2705 }
2706
2707 CORE_ADDR
2708 gdbarch_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
2709 {
2710   gdb_assert (gdbarch != NULL);
2711   gdb_assert (gdbarch->unwind_pc != NULL);
2712   if (gdbarch_debug >= 2)
2713     fprintf_unfiltered (gdb_stdlog, "gdbarch_unwind_pc called\n");
2714   return gdbarch->unwind_pc (gdbarch, next_frame);
2715 }
2716
2717 void
2718 set_gdbarch_unwind_pc (struct gdbarch *gdbarch,
2719                        gdbarch_unwind_pc_ftype unwind_pc)
2720 {
2721   gdbarch->unwind_pc = unwind_pc;
2722 }
2723
2724 int
2725 gdbarch_unwind_sp_p (struct gdbarch *gdbarch)
2726 {
2727   gdb_assert (gdbarch != NULL);
2728   return gdbarch->unwind_sp != NULL;
2729 }
2730
2731 CORE_ADDR
2732 gdbarch_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame)
2733 {
2734   gdb_assert (gdbarch != NULL);
2735   gdb_assert (gdbarch->unwind_sp != NULL);
2736   if (gdbarch_debug >= 2)
2737     fprintf_unfiltered (gdb_stdlog, "gdbarch_unwind_sp called\n");
2738   return gdbarch->unwind_sp (gdbarch, next_frame);
2739 }
2740
2741 void
2742 set_gdbarch_unwind_sp (struct gdbarch *gdbarch,
2743                        gdbarch_unwind_sp_ftype unwind_sp)
2744 {
2745   gdbarch->unwind_sp = unwind_sp;
2746 }
2747
2748 int
2749 gdbarch_frame_num_args_p (struct gdbarch *gdbarch)
2750 {
2751   gdb_assert (gdbarch != NULL);
2752   return gdbarch->frame_num_args != NULL;
2753 }
2754
2755 int
2756 gdbarch_frame_num_args (struct gdbarch *gdbarch, struct frame_info *frame)
2757 {
2758   gdb_assert (gdbarch != NULL);
2759   gdb_assert (gdbarch->frame_num_args != NULL);
2760   if (gdbarch_debug >= 2)
2761     fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_num_args called\n");
2762   return gdbarch->frame_num_args (frame);
2763 }
2764
2765 void
2766 set_gdbarch_frame_num_args (struct gdbarch *gdbarch,
2767                             gdbarch_frame_num_args_ftype frame_num_args)
2768 {
2769   gdbarch->frame_num_args = frame_num_args;
2770 }
2771
2772 int
2773 gdbarch_deprecated_stack_align_p (struct gdbarch *gdbarch)
2774 {
2775   gdb_assert (gdbarch != NULL);
2776   return gdbarch->deprecated_stack_align != NULL;
2777 }
2778
2779 CORE_ADDR
2780 gdbarch_deprecated_stack_align (struct gdbarch *gdbarch, CORE_ADDR sp)
2781 {
2782   gdb_assert (gdbarch != NULL);
2783   gdb_assert (gdbarch->deprecated_stack_align != NULL);
2784   if (gdbarch_debug >= 2)
2785     fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_stack_align called\n");
2786   return gdbarch->deprecated_stack_align (sp);
2787 }
2788
2789 void
2790 set_gdbarch_deprecated_stack_align (struct gdbarch *gdbarch,
2791                                     gdbarch_deprecated_stack_align_ftype deprecated_stack_align)
2792 {
2793   gdbarch->deprecated_stack_align = deprecated_stack_align;
2794 }
2795
2796 int
2797 gdbarch_frame_align_p (struct gdbarch *gdbarch)
2798 {
2799   gdb_assert (gdbarch != NULL);
2800   return gdbarch->frame_align != NULL;
2801 }
2802
2803 CORE_ADDR
2804 gdbarch_frame_align (struct gdbarch *gdbarch, CORE_ADDR address)
2805 {
2806   gdb_assert (gdbarch != NULL);
2807   gdb_assert (gdbarch->frame_align != NULL);
2808   if (gdbarch_debug >= 2)
2809     fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_align called\n");
2810   return gdbarch->frame_align (gdbarch, address);
2811 }
2812
2813 void
2814 set_gdbarch_frame_align (struct gdbarch *gdbarch,
2815                          gdbarch_frame_align_ftype frame_align)
2816 {
2817   gdbarch->frame_align = frame_align;
2818 }
2819
2820 int
2821 gdbarch_deprecated_reg_struct_has_addr_p (struct gdbarch *gdbarch)
2822 {
2823   gdb_assert (gdbarch != NULL);
2824   return gdbarch->deprecated_reg_struct_has_addr != NULL;
2825 }
2826
2827 int
2828 gdbarch_deprecated_reg_struct_has_addr (struct gdbarch *gdbarch, int gcc_p, struct type *type)
2829 {
2830   gdb_assert (gdbarch != NULL);
2831   gdb_assert (gdbarch->deprecated_reg_struct_has_addr != NULL);
2832   if (gdbarch_debug >= 2)
2833     fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_reg_struct_has_addr called\n");
2834   return gdbarch->deprecated_reg_struct_has_addr (gcc_p, type);
2835 }
2836
2837 void
2838 set_gdbarch_deprecated_reg_struct_has_addr (struct gdbarch *gdbarch,
2839                                             gdbarch_deprecated_reg_struct_has_addr_ftype deprecated_reg_struct_has_addr)
2840 {
2841   gdbarch->deprecated_reg_struct_has_addr = deprecated_reg_struct_has_addr;
2842 }
2843
2844 int
2845 gdbarch_stabs_argument_has_addr (struct gdbarch *gdbarch, struct type *type)
2846 {
2847   gdb_assert (gdbarch != NULL);
2848   gdb_assert (gdbarch->stabs_argument_has_addr != NULL);
2849   if (gdbarch_debug >= 2)
2850     fprintf_unfiltered (gdb_stdlog, "gdbarch_stabs_argument_has_addr called\n");
2851   return gdbarch->stabs_argument_has_addr (gdbarch, type);
2852 }
2853
2854 void
2855 set_gdbarch_stabs_argument_has_addr (struct gdbarch *gdbarch,
2856                                      gdbarch_stabs_argument_has_addr_ftype stabs_argument_has_addr)
2857 {
2858   gdbarch->stabs_argument_has_addr = stabs_argument_has_addr;
2859 }
2860
2861 int
2862 gdbarch_frame_red_zone_size (struct gdbarch *gdbarch)
2863 {
2864   gdb_assert (gdbarch != NULL);
2865   if (gdbarch_debug >= 2)
2866     fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_red_zone_size called\n");
2867   return gdbarch->frame_red_zone_size;
2868 }
2869
2870 void
2871 set_gdbarch_frame_red_zone_size (struct gdbarch *gdbarch,
2872                                  int frame_red_zone_size)
2873 {
2874   gdbarch->frame_red_zone_size = frame_red_zone_size;
2875 }
2876
2877 CORE_ADDR
2878 gdbarch_convert_from_func_ptr_addr (struct gdbarch *gdbarch, CORE_ADDR addr, struct target_ops *targ)
2879 {
2880   gdb_assert (gdbarch != NULL);
2881   gdb_assert (gdbarch->convert_from_func_ptr_addr != NULL);
2882   if (gdbarch_debug >= 2)
2883     fprintf_unfiltered (gdb_stdlog, "gdbarch_convert_from_func_ptr_addr called\n");
2884   return gdbarch->convert_from_func_ptr_addr (gdbarch, addr, targ);
2885 }
2886
2887 void
2888 set_gdbarch_convert_from_func_ptr_addr (struct gdbarch *gdbarch,
2889                                         gdbarch_convert_from_func_ptr_addr_ftype convert_from_func_ptr_addr)
2890 {
2891   gdbarch->convert_from_func_ptr_addr = convert_from_func_ptr_addr;
2892 }
2893
2894 CORE_ADDR
2895 gdbarch_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR addr)
2896 {
2897   gdb_assert (gdbarch != NULL);
2898   gdb_assert (gdbarch->addr_bits_remove != NULL);
2899   if (gdbarch_debug >= 2)
2900     fprintf_unfiltered (gdb_stdlog, "gdbarch_addr_bits_remove called\n");
2901   return gdbarch->addr_bits_remove (addr);
2902 }
2903
2904 void
2905 set_gdbarch_addr_bits_remove (struct gdbarch *gdbarch,
2906                               gdbarch_addr_bits_remove_ftype addr_bits_remove)
2907 {
2908   gdbarch->addr_bits_remove = addr_bits_remove;
2909 }
2910
2911 CORE_ADDR
2912 gdbarch_smash_text_address (struct gdbarch *gdbarch, CORE_ADDR addr)
2913 {
2914   gdb_assert (gdbarch != NULL);
2915   gdb_assert (gdbarch->smash_text_address != NULL);
2916   if (gdbarch_debug >= 2)
2917     fprintf_unfiltered (gdb_stdlog, "gdbarch_smash_text_address called\n");
2918   return gdbarch->smash_text_address (addr);
2919 }
2920
2921 void
2922 set_gdbarch_smash_text_address (struct gdbarch *gdbarch,
2923                                 gdbarch_smash_text_address_ftype smash_text_address)
2924 {
2925   gdbarch->smash_text_address = smash_text_address;
2926 }
2927
2928 int
2929 gdbarch_software_single_step_p (struct gdbarch *gdbarch)
2930 {
2931   gdb_assert (gdbarch != NULL);
2932   return gdbarch->software_single_step != NULL;
2933 }
2934
2935 int
2936 gdbarch_software_single_step (struct gdbarch *gdbarch, struct regcache *regcache)
2937 {
2938   gdb_assert (gdbarch != NULL);
2939   gdb_assert (gdbarch->software_single_step != NULL);
2940   if (gdbarch_debug >= 2)
2941     fprintf_unfiltered (gdb_stdlog, "gdbarch_software_single_step called\n");
2942   return gdbarch->software_single_step (regcache);
2943 }
2944
2945 void
2946 set_gdbarch_software_single_step (struct gdbarch *gdbarch,
2947                                   gdbarch_software_single_step_ftype software_single_step)
2948 {
2949   gdbarch->software_single_step = software_single_step;
2950 }
2951
2952 int
2953 gdbarch_single_step_through_delay_p (struct gdbarch *gdbarch)
2954 {
2955   gdb_assert (gdbarch != NULL);
2956   return gdbarch->single_step_through_delay != NULL;
2957 }
2958
2959 int
2960 gdbarch_single_step_through_delay (struct gdbarch *gdbarch, struct frame_info *frame)
2961 {
2962   gdb_assert (gdbarch != NULL);
2963   gdb_assert (gdbarch->single_step_through_delay != NULL);
2964   if (gdbarch_debug >= 2)
2965     fprintf_unfiltered (gdb_stdlog, "gdbarch_single_step_through_delay called\n");
2966   return gdbarch->single_step_through_delay (gdbarch, frame);
2967 }
2968
2969 void
2970 set_gdbarch_single_step_through_delay (struct gdbarch *gdbarch,
2971                                        gdbarch_single_step_through_delay_ftype single_step_through_delay)
2972 {
2973   gdbarch->single_step_through_delay = single_step_through_delay;
2974 }
2975
2976 int
2977 gdbarch_print_insn (struct gdbarch *gdbarch, bfd_vma vma, struct disassemble_info *info)
2978 {
2979   gdb_assert (gdbarch != NULL);
2980   gdb_assert (gdbarch->print_insn != NULL);
2981   if (gdbarch_debug >= 2)
2982     fprintf_unfiltered (gdb_stdlog, "gdbarch_print_insn called\n");
2983   return gdbarch->print_insn (vma, info);
2984 }
2985
2986 void
2987 set_gdbarch_print_insn (struct gdbarch *gdbarch,
2988                         gdbarch_print_insn_ftype print_insn)
2989 {
2990   gdbarch->print_insn = print_insn;
2991 }
2992
2993 CORE_ADDR
2994 gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, CORE_ADDR pc)
2995 {
2996   gdb_assert (gdbarch != NULL);
2997   gdb_assert (gdbarch->skip_trampoline_code != NULL);
2998   if (gdbarch_debug >= 2)
2999     fprintf_unfiltered (gdb_stdlog, "gdbarch_skip_trampoline_code called\n");
3000   return gdbarch->skip_trampoline_code (pc);
3001 }
3002
3003 void
3004 set_gdbarch_skip_trampoline_code (struct gdbarch *gdbarch,
3005                                   gdbarch_skip_trampoline_code_ftype skip_trampoline_code)
3006 {
3007   gdbarch->skip_trampoline_code = skip_trampoline_code;
3008 }
3009
3010 CORE_ADDR
3011 gdbarch_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
3012 {
3013   gdb_assert (gdbarch != NULL);
3014   gdb_assert (gdbarch->skip_solib_resolver != NULL);
3015   if (gdbarch_debug >= 2)
3016     fprintf_unfiltered (gdb_stdlog, "gdbarch_skip_solib_resolver called\n");
3017   return gdbarch->skip_solib_resolver (gdbarch, pc);
3018 }
3019
3020 void
3021 set_gdbarch_skip_solib_resolver (struct gdbarch *gdbarch,
3022                                  gdbarch_skip_solib_resolver_ftype skip_solib_resolver)
3023 {
3024   gdbarch->skip_solib_resolver = skip_solib_resolver;
3025 }
3026
3027 int
3028 gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, char *name)
3029 {
3030   gdb_assert (gdbarch != NULL);
3031   gdb_assert (gdbarch->in_solib_return_trampoline != NULL);
3032   if (gdbarch_debug >= 2)
3033     fprintf_unfiltered (gdb_stdlog, "gdbarch_in_solib_return_trampoline called\n");
3034   return gdbarch->in_solib_return_trampoline (pc, name);
3035 }
3036
3037 void
3038 set_gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch,
3039                                         gdbarch_in_solib_return_trampoline_ftype in_solib_return_trampoline)
3040 {
3041   gdbarch->in_solib_return_trampoline = in_solib_return_trampoline;
3042 }
3043
3044 int
3045 gdbarch_in_function_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR addr)
3046 {
3047   gdb_assert (gdbarch != NULL);
3048   gdb_assert (gdbarch->in_function_epilogue_p != NULL);
3049   if (gdbarch_debug >= 2)
3050     fprintf_unfiltered (gdb_stdlog, "gdbarch_in_function_epilogue_p called\n");
3051   return gdbarch->in_function_epilogue_p (gdbarch, addr);
3052 }
3053
3054 void
3055 set_gdbarch_in_function_epilogue_p (struct gdbarch *gdbarch,
3056                                     gdbarch_in_function_epilogue_p_ftype in_function_epilogue_p)
3057 {
3058   gdbarch->in_function_epilogue_p = in_function_epilogue_p;
3059 }
3060
3061 char *
3062 gdbarch_construct_inferior_arguments (struct gdbarch *gdbarch, int argc, char **argv)
3063 {
3064   gdb_assert (gdbarch != NULL);
3065   gdb_assert (gdbarch->construct_inferior_arguments != NULL);
3066   if (gdbarch_debug >= 2)
3067     fprintf_unfiltered (gdb_stdlog, "gdbarch_construct_inferior_arguments called\n");
3068   return gdbarch->construct_inferior_arguments (gdbarch, argc, argv);
3069 }
3070
3071 void
3072 set_gdbarch_construct_inferior_arguments (struct gdbarch *gdbarch,
3073                                           gdbarch_construct_inferior_arguments_ftype construct_inferior_arguments)
3074 {
3075   gdbarch->construct_inferior_arguments = construct_inferior_arguments;
3076 }
3077
3078 void
3079 gdbarch_elf_make_msymbol_special (struct gdbarch *gdbarch, asymbol *sym, struct minimal_symbol *msym)
3080 {
3081   gdb_assert (gdbarch != NULL);
3082   gdb_assert (gdbarch->elf_make_msymbol_special != NULL);
3083   if (gdbarch_debug >= 2)
3084     fprintf_unfiltered (gdb_stdlog, "gdbarch_elf_make_msymbol_special called\n");
3085   gdbarch->elf_make_msymbol_special (sym, msym);
3086 }
3087
3088 void
3089 set_gdbarch_elf_make_msymbol_special (struct gdbarch *gdbarch,
3090                                       gdbarch_elf_make_msymbol_special_ftype elf_make_msymbol_special)
3091 {
3092   gdbarch->elf_make_msymbol_special = elf_make_msymbol_special;
3093 }
3094
3095 void
3096 gdbarch_coff_make_msymbol_special (struct gdbarch *gdbarch, int val, struct minimal_symbol *msym)
3097 {
3098   gdb_assert (gdbarch != NULL);
3099   gdb_assert (gdbarch->coff_make_msymbol_special != NULL);
3100   if (gdbarch_debug >= 2)
3101     fprintf_unfiltered (gdb_stdlog, "gdbarch_coff_make_msymbol_special called\n");
3102   gdbarch->coff_make_msymbol_special (val, msym);
3103 }
3104
3105 void
3106 set_gdbarch_coff_make_msymbol_special (struct gdbarch *gdbarch,
3107                                        gdbarch_coff_make_msymbol_special_ftype coff_make_msymbol_special)
3108 {
3109   gdbarch->coff_make_msymbol_special = coff_make_msymbol_special;
3110 }
3111
3112 const char *
3113 gdbarch_name_of_malloc (struct gdbarch *gdbarch)
3114 {
3115   gdb_assert (gdbarch != NULL);
3116   /* Skip verify of name_of_malloc, invalid_p == 0 */
3117   if (gdbarch_debug >= 2)
3118     fprintf_unfiltered (gdb_stdlog, "gdbarch_name_of_malloc called\n");
3119   return gdbarch->name_of_malloc;
3120 }
3121
3122 void
3123 set_gdbarch_name_of_malloc (struct gdbarch *gdbarch,
3124                             const char * name_of_malloc)
3125 {
3126   gdbarch->name_of_malloc = name_of_malloc;
3127 }
3128
3129 int
3130 gdbarch_cannot_step_breakpoint (struct gdbarch *gdbarch)
3131 {
3132   gdb_assert (gdbarch != NULL);
3133   /* Skip verify of cannot_step_breakpoint, invalid_p == 0 */
3134   if (gdbarch_debug >= 2)
3135     fprintf_unfiltered (gdb_stdlog, "gdbarch_cannot_step_breakpoint called\n");
3136   return gdbarch->cannot_step_breakpoint;
3137 }
3138
3139 void
3140 set_gdbarch_cannot_step_breakpoint (struct gdbarch *gdbarch,
3141                                     int cannot_step_breakpoint)
3142 {
3143   gdbarch->cannot_step_breakpoint = cannot_step_breakpoint;
3144 }
3145
3146 int
3147 gdbarch_have_nonsteppable_watchpoint (struct gdbarch *gdbarch)
3148 {
3149   gdb_assert (gdbarch != NULL);
3150   /* Skip verify of have_nonsteppable_watchpoint, invalid_p == 0 */
3151   if (gdbarch_debug >= 2)
3152     fprintf_unfiltered (gdb_stdlog, "gdbarch_have_nonsteppable_watchpoint called\n");
3153   return gdbarch->have_nonsteppable_watchpoint;
3154 }
3155
3156 void
3157 set_gdbarch_have_nonsteppable_watchpoint (struct gdbarch *gdbarch,
3158                                           int have_nonsteppable_watchpoint)
3159 {
3160   gdbarch->have_nonsteppable_watchpoint = have_nonsteppable_watchpoint;
3161 }
3162
3163 int
3164 gdbarch_address_class_type_flags_p (struct gdbarch *gdbarch)
3165 {
3166   gdb_assert (gdbarch != NULL);
3167   return gdbarch->address_class_type_flags != NULL;
3168 }
3169
3170 int
3171 gdbarch_address_class_type_flags (struct gdbarch *gdbarch, int byte_size, int dwarf2_addr_class)
3172 {
3173   gdb_assert (gdbarch != NULL);
3174   gdb_assert (gdbarch->address_class_type_flags != NULL);
3175   if (gdbarch_debug >= 2)
3176     fprintf_unfiltered (gdb_stdlog, "gdbarch_address_class_type_flags called\n");
3177   return gdbarch->address_class_type_flags (byte_size, dwarf2_addr_class);
3178 }
3179
3180 void
3181 set_gdbarch_address_class_type_flags (struct gdbarch *gdbarch,
3182                                       gdbarch_address_class_type_flags_ftype address_class_type_flags)
3183 {
3184   gdbarch->address_class_type_flags = address_class_type_flags;
3185 }
3186
3187 int
3188 gdbarch_address_class_type_flags_to_name_p (struct gdbarch *gdbarch)
3189 {
3190   gdb_assert (gdbarch != NULL);
3191   return gdbarch->address_class_type_flags_to_name != NULL;
3192 }
3193
3194 const char *
3195 gdbarch_address_class_type_flags_to_name (struct gdbarch *gdbarch, int type_flags)
3196 {
3197   gdb_assert (gdbarch != NULL);
3198   gdb_assert (gdbarch->address_class_type_flags_to_name != NULL);
3199   if (gdbarch_debug >= 2)
3200     fprintf_unfiltered (gdb_stdlog, "gdbarch_address_class_type_flags_to_name called\n");
3201   return gdbarch->address_class_type_flags_to_name (gdbarch, type_flags);
3202 }
3203
3204 void
3205 set_gdbarch_address_class_type_flags_to_name (struct gdbarch *gdbarch,
3206                                               gdbarch_address_class_type_flags_to_name_ftype address_class_type_flags_to_name)
3207 {
3208   gdbarch->address_class_type_flags_to_name = address_class_type_flags_to_name;
3209 }
3210
3211 int
3212 gdbarch_address_class_name_to_type_flags_p (struct gdbarch *gdbarch)
3213 {
3214   gdb_assert (gdbarch != NULL);
3215   return gdbarch->address_class_name_to_type_flags != NULL;
3216 }
3217
3218 int
3219 gdbarch_address_class_name_to_type_flags (struct gdbarch *gdbarch, const char *name, int *type_flags_ptr)
3220 {
3221   gdb_assert (gdbarch != NULL);
3222   gdb_assert (gdbarch->address_class_name_to_type_flags != NULL);
3223   if (gdbarch_debug >= 2)
3224     fprintf_unfiltered (gdb_stdlog, "gdbarch_address_class_name_to_type_flags called\n");
3225   return gdbarch->address_class_name_to_type_flags (gdbarch, name, type_flags_ptr);
3226 }
3227
3228 void
3229 set_gdbarch_address_class_name_to_type_flags (struct gdbarch *gdbarch,
3230                                               gdbarch_address_class_name_to_type_flags_ftype address_class_name_to_type_flags)
3231 {
3232   gdbarch->address_class_name_to_type_flags = address_class_name_to_type_flags;
3233 }
3234
3235 int
3236 gdbarch_register_reggroup_p (struct gdbarch *gdbarch, int regnum, struct reggroup *reggroup)
3237 {
3238   gdb_assert (gdbarch != NULL);
3239   gdb_assert (gdbarch->register_reggroup_p != NULL);
3240   if (gdbarch_debug >= 2)
3241     fprintf_unfiltered (gdb_stdlog, "gdbarch_register_reggroup_p called\n");
3242   return gdbarch->register_reggroup_p (gdbarch, regnum, reggroup);
3243 }
3244
3245 void
3246 set_gdbarch_register_reggroup_p (struct gdbarch *gdbarch,
3247                                  gdbarch_register_reggroup_p_ftype register_reggroup_p)
3248 {
3249   gdbarch->register_reggroup_p = register_reggroup_p;
3250 }
3251
3252 int
3253 gdbarch_fetch_pointer_argument_p (struct gdbarch *gdbarch)
3254 {
3255   gdb_assert (gdbarch != NULL);
3256   return gdbarch->fetch_pointer_argument != NULL;
3257 }
3258
3259 CORE_ADDR
3260 gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, struct frame_info *frame, int argi, struct type *type)
3261 {
3262   gdb_assert (gdbarch != NULL);
3263   gdb_assert (gdbarch->fetch_pointer_argument != NULL);
3264   if (gdbarch_debug >= 2)
3265     fprintf_unfiltered (gdb_stdlog, "gdbarch_fetch_pointer_argument called\n");
3266   return gdbarch->fetch_pointer_argument (frame, argi, type);
3267 }
3268
3269 void
3270 set_gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch,
3271                                     gdbarch_fetch_pointer_argument_ftype fetch_pointer_argument)
3272 {
3273   gdbarch->fetch_pointer_argument = fetch_pointer_argument;
3274 }
3275
3276 int
3277 gdbarch_regset_from_core_section_p (struct gdbarch *gdbarch)
3278 {
3279   gdb_assert (gdbarch != NULL);
3280   return gdbarch->regset_from_core_section != NULL;
3281 }
3282
3283 const struct regset *
3284 gdbarch_regset_from_core_section (struct gdbarch *gdbarch, const char *sect_name, size_t sect_size)
3285 {
3286   gdb_assert (gdbarch != NULL);
3287   gdb_assert (gdbarch->regset_from_core_section != NULL);
3288   if (gdbarch_debug >= 2)
3289     fprintf_unfiltered (gdb_stdlog, "gdbarch_regset_from_core_section called\n");
3290   return gdbarch->regset_from_core_section (gdbarch, sect_name, sect_size);
3291 }
3292
3293 void
3294 set_gdbarch_regset_from_core_section (struct gdbarch *gdbarch,
3295                                       gdbarch_regset_from_core_section_ftype regset_from_core_section)
3296 {
3297   gdbarch->regset_from_core_section = regset_from_core_section;
3298 }
3299
3300 int
3301 gdbarch_vtable_function_descriptors (struct gdbarch *gdbarch)
3302 {
3303   gdb_assert (gdbarch != NULL);
3304   /* Skip verify of vtable_function_descriptors, invalid_p == 0 */
3305   if (gdbarch_debug >= 2)
3306     fprintf_unfiltered (gdb_stdlog, "gdbarch_vtable_function_descriptors called\n");
3307   return gdbarch->vtable_function_descriptors;
3308 }
3309
3310 void
3311 set_gdbarch_vtable_function_descriptors (struct gdbarch *gdbarch,
3312                                          int vtable_function_descriptors)
3313 {
3314   gdbarch->vtable_function_descriptors = vtable_function_descriptors;
3315 }
3316
3317 int
3318 gdbarch_vbit_in_delta (struct gdbarch *gdbarch)
3319 {
3320   gdb_assert (gdbarch != NULL);
3321   /* Skip verify of vbit_in_delta, invalid_p == 0 */
3322   if (gdbarch_debug >= 2)
3323     fprintf_unfiltered (gdb_stdlog, "gdbarch_vbit_in_delta called\n");
3324   return gdbarch->vbit_in_delta;
3325 }
3326
3327 void
3328 set_gdbarch_vbit_in_delta (struct gdbarch *gdbarch,
3329                            int vbit_in_delta)
3330 {
3331   gdbarch->vbit_in_delta = vbit_in_delta;
3332 }
3333
3334 int
3335 gdbarch_skip_permanent_breakpoint_p (struct gdbarch *gdbarch)
3336 {
3337   gdb_assert (gdbarch != NULL);
3338   return gdbarch->skip_permanent_breakpoint != NULL;
3339 }
3340
3341 void
3342 gdbarch_skip_permanent_breakpoint (struct gdbarch *gdbarch, struct regcache *regcache)
3343 {
3344   gdb_assert (gdbarch != NULL);
3345   gdb_assert (gdbarch->skip_permanent_breakpoint != NULL);
3346   if (gdbarch_debug >= 2)
3347     fprintf_unfiltered (gdb_stdlog, "gdbarch_skip_permanent_breakpoint called\n");
3348   gdbarch->skip_permanent_breakpoint (regcache);
3349 }
3350
3351 void
3352 set_gdbarch_skip_permanent_breakpoint (struct gdbarch *gdbarch,
3353                                        gdbarch_skip_permanent_breakpoint_ftype skip_permanent_breakpoint)
3354 {
3355   gdbarch->skip_permanent_breakpoint = skip_permanent_breakpoint;
3356 }
3357
3358 int
3359 gdbarch_overlay_update_p (struct gdbarch *gdbarch)
3360 {
3361   gdb_assert (gdbarch != NULL);
3362   return gdbarch->overlay_update != NULL;
3363 }
3364
3365 void
3366 gdbarch_overlay_update (struct gdbarch *gdbarch, struct obj_section *osect)
3367 {
3368   gdb_assert (gdbarch != NULL);
3369   gdb_assert (gdbarch->overlay_update != NULL);
3370   if (gdbarch_debug >= 2)
3371     fprintf_unfiltered (gdb_stdlog, "gdbarch_overlay_update called\n");
3372   gdbarch->overlay_update (osect);
3373 }
3374
3375 void
3376 set_gdbarch_overlay_update (struct gdbarch *gdbarch,
3377                             gdbarch_overlay_update_ftype overlay_update)
3378 {
3379   gdbarch->overlay_update = overlay_update;
3380 }
3381
3382
3383 /* Keep a registry of per-architecture data-pointers required by GDB
3384    modules. */
3385
3386 struct gdbarch_data
3387 {
3388   unsigned index;
3389   int init_p;
3390   gdbarch_data_pre_init_ftype *pre_init;
3391   gdbarch_data_post_init_ftype *post_init;
3392 };
3393
3394 struct gdbarch_data_registration
3395 {
3396   struct gdbarch_data *data;
3397   struct gdbarch_data_registration *next;
3398 };
3399
3400 struct gdbarch_data_registry
3401 {
3402   unsigned nr;
3403   struct gdbarch_data_registration *registrations;
3404 };
3405
3406 struct gdbarch_data_registry gdbarch_data_registry =
3407 {
3408   0, NULL,
3409 };
3410
3411 static struct gdbarch_data *
3412 gdbarch_data_register (gdbarch_data_pre_init_ftype *pre_init,
3413                        gdbarch_data_post_init_ftype *post_init)
3414 {
3415   struct gdbarch_data_registration **curr;
3416   /* Append the new registraration.  */
3417   for (curr = &gdbarch_data_registry.registrations;
3418        (*curr) != NULL;
3419        curr = &(*curr)->next);
3420   (*curr) = XMALLOC (struct gdbarch_data_registration);
3421   (*curr)->next = NULL;
3422   (*curr)->data = XMALLOC (struct gdbarch_data);
3423   (*curr)->data->index = gdbarch_data_registry.nr++;
3424   (*curr)->data->pre_init = pre_init;
3425   (*curr)->data->post_init = post_init;
3426   (*curr)->data->init_p = 1;
3427   return (*curr)->data;
3428 }
3429
3430 struct gdbarch_data *
3431 gdbarch_data_register_pre_init (gdbarch_data_pre_init_ftype *pre_init)
3432 {
3433   return gdbarch_data_register (pre_init, NULL);
3434 }
3435
3436 struct gdbarch_data *
3437 gdbarch_data_register_post_init (gdbarch_data_post_init_ftype *post_init)
3438 {
3439   return gdbarch_data_register (NULL, post_init);
3440 }
3441
3442 /* Create/delete the gdbarch data vector. */
3443
3444 static void
3445 alloc_gdbarch_data (struct gdbarch *gdbarch)
3446 {
3447   gdb_assert (gdbarch->data == NULL);
3448   gdbarch->nr_data = gdbarch_data_registry.nr;
3449   gdbarch->data = GDBARCH_OBSTACK_CALLOC (gdbarch, gdbarch->nr_data, void *);
3450 }
3451
3452 /* Initialize the current value of the specified per-architecture
3453    data-pointer. */
3454
3455 void
3456 deprecated_set_gdbarch_data (struct gdbarch *gdbarch,
3457                              struct gdbarch_data *data,
3458                              void *pointer)
3459 {
3460   gdb_assert (data->index < gdbarch->nr_data);
3461   gdb_assert (gdbarch->data[data->index] == NULL);
3462   gdb_assert (data->pre_init == NULL);
3463   gdbarch->data[data->index] = pointer;
3464 }
3465
3466 /* Return the current value of the specified per-architecture
3467    data-pointer. */
3468
3469 void *
3470 gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *data)
3471 {
3472   gdb_assert (data->index < gdbarch->nr_data);
3473   if (gdbarch->data[data->index] == NULL)
3474     {
3475       /* The data-pointer isn't initialized, call init() to get a
3476          value.  */
3477       if (data->pre_init != NULL)
3478         /* Mid architecture creation: pass just the obstack, and not
3479            the entire architecture, as that way it isn't possible for
3480            pre-init code to refer to undefined architecture
3481            fields.  */
3482         gdbarch->data[data->index] = data->pre_init (gdbarch->obstack);
3483       else if (gdbarch->initialized_p
3484                && data->post_init != NULL)
3485         /* Post architecture creation: pass the entire architecture
3486            (as all fields are valid), but be careful to also detect
3487            recursive references.  */
3488         {
3489           gdb_assert (data->init_p);
3490           data->init_p = 0;
3491           gdbarch->data[data->index] = data->post_init (gdbarch);
3492           data->init_p = 1;
3493         }
3494       else
3495         /* The architecture initialization hasn't completed - punt -
3496          hope that the caller knows what they are doing.  Once
3497          deprecated_set_gdbarch_data has been initialized, this can be
3498          changed to an internal error.  */
3499         return NULL;
3500       gdb_assert (gdbarch->data[data->index] != NULL);
3501     }
3502   return gdbarch->data[data->index];
3503 }
3504
3505
3506
3507 /* Keep a registry of swapped data required by GDB modules. */
3508
3509 struct gdbarch_swap
3510 {
3511   void *swap;
3512   struct gdbarch_swap_registration *source;
3513   struct gdbarch_swap *next;
3514 };
3515
3516 struct gdbarch_swap_registration
3517 {
3518   void *data;
3519   unsigned long sizeof_data;
3520   gdbarch_swap_ftype *init;
3521   struct gdbarch_swap_registration *next;
3522 };
3523
3524 struct gdbarch_swap_registry
3525 {
3526   int nr;
3527   struct gdbarch_swap_registration *registrations;
3528 };
3529
3530 struct gdbarch_swap_registry gdbarch_swap_registry = 
3531 {
3532   0, NULL,
3533 };
3534
3535 void
3536 deprecated_register_gdbarch_swap (void *data,
3537                                   unsigned long sizeof_data,
3538                                   gdbarch_swap_ftype *init)
3539 {
3540   struct gdbarch_swap_registration **rego;
3541   for (rego = &gdbarch_swap_registry.registrations;
3542        (*rego) != NULL;
3543        rego = &(*rego)->next);
3544   (*rego) = XMALLOC (struct gdbarch_swap_registration);
3545   (*rego)->next = NULL;
3546   (*rego)->init = init;
3547   (*rego)->data = data;
3548   (*rego)->sizeof_data = sizeof_data;
3549 }
3550
3551 static void
3552 current_gdbarch_swap_init_hack (void)
3553 {
3554   struct gdbarch_swap_registration *rego;
3555   struct gdbarch_swap **curr = &current_gdbarch->swap;
3556   for (rego = gdbarch_swap_registry.registrations;
3557        rego != NULL;
3558        rego = rego->next)
3559     {
3560       if (rego->data != NULL)
3561         {
3562           (*curr) = GDBARCH_OBSTACK_ZALLOC (current_gdbarch,
3563                                             struct gdbarch_swap);
3564           (*curr)->source = rego;
3565           (*curr)->swap = gdbarch_obstack_zalloc (current_gdbarch,
3566                                                   rego->sizeof_data);
3567           (*curr)->next = NULL;
3568           curr = &(*curr)->next;
3569         }
3570       if (rego->init != NULL)
3571         rego->init ();
3572     }
3573 }
3574
3575 static struct gdbarch *
3576 current_gdbarch_swap_out_hack (void)
3577 {
3578   struct gdbarch *old_gdbarch = current_gdbarch;
3579   struct gdbarch_swap *curr;
3580
3581   gdb_assert (old_gdbarch != NULL);
3582   for (curr = old_gdbarch->swap;
3583        curr != NULL;
3584        curr = curr->next)
3585     {
3586       memcpy (curr->swap, curr->source->data, curr->source->sizeof_data);
3587       memset (curr->source->data, 0, curr->source->sizeof_data);
3588     }
3589   current_gdbarch = NULL;
3590   return old_gdbarch;
3591 }
3592
3593 static void
3594 current_gdbarch_swap_in_hack (struct gdbarch *new_gdbarch)
3595 {
3596   struct gdbarch_swap *curr;
3597
3598   gdb_assert (current_gdbarch == NULL);
3599   for (curr = new_gdbarch->swap;
3600        curr != NULL;
3601        curr = curr->next)
3602     memcpy (curr->source->data, curr->swap, curr->source->sizeof_data);
3603   current_gdbarch = new_gdbarch;
3604 }
3605
3606
3607 /* Keep a registry of the architectures known by GDB. */
3608
3609 struct gdbarch_registration
3610 {
3611   enum bfd_architecture bfd_architecture;
3612   gdbarch_init_ftype *init;
3613   gdbarch_dump_tdep_ftype *dump_tdep;
3614   struct gdbarch_list *arches;
3615   struct gdbarch_registration *next;
3616 };
3617
3618 static struct gdbarch_registration *gdbarch_registry = NULL;
3619
3620 static void
3621 append_name (const char ***buf, int *nr, const char *name)
3622 {
3623   *buf = xrealloc (*buf, sizeof (char**) * (*nr + 1));
3624   (*buf)[*nr] = name;
3625   *nr += 1;
3626 }
3627
3628 const char **
3629 gdbarch_printable_names (void)
3630 {
3631   /* Accumulate a list of names based on the registed list of
3632      architectures. */
3633   enum bfd_architecture a;
3634   int nr_arches = 0;
3635   const char **arches = NULL;
3636   struct gdbarch_registration *rego;
3637   for (rego = gdbarch_registry;
3638        rego != NULL;
3639        rego = rego->next)
3640     {
3641       const struct bfd_arch_info *ap;
3642       ap = bfd_lookup_arch (rego->bfd_architecture, 0);
3643       if (ap == NULL)
3644         internal_error (__FILE__, __LINE__,
3645                         _("gdbarch_architecture_names: multi-arch unknown"));
3646       do
3647         {
3648           append_name (&arches, &nr_arches, ap->printable_name);
3649           ap = ap->next;
3650         }
3651       while (ap != NULL);
3652     }
3653   append_name (&arches, &nr_arches, NULL);
3654   return arches;
3655 }
3656
3657
3658 void
3659 gdbarch_register (enum bfd_architecture bfd_architecture,
3660                   gdbarch_init_ftype *init,
3661                   gdbarch_dump_tdep_ftype *dump_tdep)
3662 {
3663   struct gdbarch_registration **curr;
3664   const struct bfd_arch_info *bfd_arch_info;
3665   /* Check that BFD recognizes this architecture */
3666   bfd_arch_info = bfd_lookup_arch (bfd_architecture, 0);
3667   if (bfd_arch_info == NULL)
3668     {
3669       internal_error (__FILE__, __LINE__,
3670                       _("gdbarch: Attempt to register unknown architecture (%d)"),
3671                       bfd_architecture);
3672     }
3673   /* Check that we haven't seen this architecture before */
3674   for (curr = &gdbarch_registry;
3675        (*curr) != NULL;
3676        curr = &(*curr)->next)
3677     {
3678       if (bfd_architecture == (*curr)->bfd_architecture)
3679         internal_error (__FILE__, __LINE__,
3680                         _("gdbarch: Duplicate registraration of architecture (%s)"),
3681                         bfd_arch_info->printable_name);
3682     }
3683   /* log it */
3684   if (gdbarch_debug)
3685     fprintf_unfiltered (gdb_stdlog, "register_gdbarch_init (%s, 0x%08lx)\n",
3686                         bfd_arch_info->printable_name,
3687                         (long) init);
3688   /* Append it */
3689   (*curr) = XMALLOC (struct gdbarch_registration);
3690   (*curr)->bfd_architecture = bfd_architecture;
3691   (*curr)->init = init;
3692   (*curr)->dump_tdep = dump_tdep;
3693   (*curr)->arches = NULL;
3694   (*curr)->next = NULL;
3695 }
3696
3697 void
3698 register_gdbarch_init (enum bfd_architecture bfd_architecture,
3699                        gdbarch_init_ftype *init)
3700 {
3701   gdbarch_register (bfd_architecture, init, NULL);
3702 }
3703
3704
3705 /* Look for an architecture using gdbarch_info.  */
3706
3707 struct gdbarch_list *
3708 gdbarch_list_lookup_by_info (struct gdbarch_list *arches,
3709                              const struct gdbarch_info *info)
3710 {
3711   for (; arches != NULL; arches = arches->next)
3712     {
3713       if (info->bfd_arch_info != arches->gdbarch->bfd_arch_info)
3714         continue;
3715       if (info->byte_order != arches->gdbarch->byte_order)
3716         continue;
3717       if (info->osabi != arches->gdbarch->osabi)
3718         continue;
3719       if (info->target_desc != arches->gdbarch->target_desc)
3720         continue;
3721       return arches;
3722     }
3723   return NULL;
3724 }
3725
3726
3727 /* Find an architecture that matches the specified INFO.  Create a new
3728    architecture if needed.  Return that new architecture.  Assumes
3729    that there is no current architecture.  */
3730
3731 static struct gdbarch *
3732 find_arch_by_info (struct gdbarch_info info)
3733 {
3734   struct gdbarch *new_gdbarch;
3735   struct gdbarch_registration *rego;
3736
3737   /* The existing architecture has been swapped out - all this code
3738      works from a clean slate.  */
3739   gdb_assert (current_gdbarch == NULL);
3740
3741   /* Fill in missing parts of the INFO struct using a number of
3742      sources: "set ..."; INFOabfd supplied; and the global
3743      defaults.  */
3744   gdbarch_info_fill (&info);
3745
3746   /* Must have found some sort of architecture. */
3747   gdb_assert (info.bfd_arch_info != NULL);
3748
3749   if (gdbarch_debug)
3750     {
3751       fprintf_unfiltered (gdb_stdlog,
3752                           "find_arch_by_info: info.bfd_arch_info %s\n",
3753                           (info.bfd_arch_info != NULL
3754                            ? info.bfd_arch_info->printable_name
3755                            : "(null)"));
3756       fprintf_unfiltered (gdb_stdlog,
3757                           "find_arch_by_info: info.byte_order %d (%s)\n",
3758                           info.byte_order,
3759                           (info.byte_order == BFD_ENDIAN_BIG ? "big"
3760                            : info.byte_order == BFD_ENDIAN_LITTLE ? "little"
3761                            : "default"));
3762       fprintf_unfiltered (gdb_stdlog,
3763                           "find_arch_by_info: info.osabi %d (%s)\n",
3764                           info.osabi, gdbarch_osabi_name (info.osabi));
3765       fprintf_unfiltered (gdb_stdlog,
3766                           "find_arch_by_info: info.abfd 0x%lx\n",
3767                           (long) info.abfd);
3768       fprintf_unfiltered (gdb_stdlog,
3769                           "find_arch_by_info: info.tdep_info 0x%lx\n",
3770                           (long) info.tdep_info);
3771     }
3772
3773   /* Find the tdep code that knows about this architecture.  */
3774   for (rego = gdbarch_registry;
3775        rego != NULL;
3776        rego = rego->next)
3777     if (rego->bfd_architecture == info.bfd_arch_info->arch)
3778       break;
3779   if (rego == NULL)
3780     {
3781       if (gdbarch_debug)
3782         fprintf_unfiltered (gdb_stdlog, "find_arch_by_info: "
3783                             "No matching architecture\n");
3784       return 0;
3785     }
3786
3787   /* Ask the tdep code for an architecture that matches "info".  */
3788   new_gdbarch = rego->init (info, rego->arches);
3789
3790   /* Did the tdep code like it?  No.  Reject the change and revert to
3791      the old architecture.  */
3792   if (new_gdbarch == NULL)
3793     {
3794       if (gdbarch_debug)
3795         fprintf_unfiltered (gdb_stdlog, "find_arch_by_info: "
3796                             "Target rejected architecture\n");
3797       return NULL;
3798     }
3799
3800   /* Is this a pre-existing architecture (as determined by already
3801      being initialized)?  Move it to the front of the architecture
3802      list (keeping the list sorted Most Recently Used).  */
3803   if (new_gdbarch->initialized_p)
3804     {
3805       struct gdbarch_list **list;
3806       struct gdbarch_list *this;
3807       if (gdbarch_debug)
3808         fprintf_unfiltered (gdb_stdlog, "find_arch_by_info: "
3809                             "Previous architecture 0x%08lx (%s) selected\n",
3810                             (long) new_gdbarch,
3811                             new_gdbarch->bfd_arch_info->printable_name);
3812       /* Find the existing arch in the list.  */
3813       for (list = &rego->arches;
3814            (*list) != NULL && (*list)->gdbarch != new_gdbarch;
3815            list = &(*list)->next);
3816       /* It had better be in the list of architectures.  */
3817       gdb_assert ((*list) != NULL && (*list)->gdbarch == new_gdbarch);
3818       /* Unlink THIS.  */
3819       this = (*list);
3820       (*list) = this->next;
3821       /* Insert THIS at the front.  */
3822       this->next = rego->arches;
3823       rego->arches = this;
3824       /* Return it.  */
3825       return new_gdbarch;
3826     }
3827
3828   /* It's a new architecture.  */
3829   if (gdbarch_debug)
3830     fprintf_unfiltered (gdb_stdlog, "find_arch_by_info: "
3831                         "New architecture 0x%08lx (%s) selected\n",
3832                         (long) new_gdbarch,
3833                         new_gdbarch->bfd_arch_info->printable_name);
3834   
3835   /* Insert the new architecture into the front of the architecture
3836      list (keep the list sorted Most Recently Used).  */
3837   {
3838     struct gdbarch_list *this = XMALLOC (struct gdbarch_list);
3839     this->next = rego->arches;
3840     this->gdbarch = new_gdbarch;
3841     rego->arches = this;
3842   }    
3843
3844   /* Check that the newly installed architecture is valid.  Plug in
3845      any post init values.  */
3846   new_gdbarch->dump_tdep = rego->dump_tdep;
3847   verify_gdbarch (new_gdbarch);
3848   new_gdbarch->initialized_p = 1;
3849
3850   /* Initialize any per-architecture swap areas.  This phase requires
3851      a valid global CURRENT_GDBARCH.  Set it momentarially, and then
3852      swap the entire architecture out.  */
3853   current_gdbarch = new_gdbarch;
3854   current_gdbarch_swap_init_hack ();
3855   current_gdbarch_swap_out_hack ();
3856
3857   if (gdbarch_debug)
3858     gdbarch_dump (new_gdbarch, gdb_stdlog);
3859
3860   return new_gdbarch;
3861 }
3862
3863 struct gdbarch *
3864 gdbarch_find_by_info (struct gdbarch_info info)
3865 {
3866   /* Save the previously selected architecture, setting the global to
3867      NULL.  This stops things like gdbarch->init() trying to use the
3868      previous architecture's configuration.  The previous architecture
3869      may not even be of the same architecture family.  The most recent
3870      architecture of the same family is found at the head of the
3871      rego->arches list.  */
3872   struct gdbarch *old_gdbarch = current_gdbarch_swap_out_hack ();
3873
3874   /* Find the specified architecture.  */
3875   struct gdbarch *new_gdbarch = find_arch_by_info (info);
3876
3877   /* Restore the existing architecture.  */
3878   gdb_assert (current_gdbarch == NULL);
3879   current_gdbarch_swap_in_hack (old_gdbarch);
3880
3881   return new_gdbarch;
3882 }
3883
3884 /* Make the specified architecture current, swapping the existing one
3885    out.  */
3886
3887 void
3888 deprecated_current_gdbarch_select_hack (struct gdbarch *new_gdbarch)
3889 {
3890   gdb_assert (new_gdbarch != NULL);
3891   gdb_assert (current_gdbarch != NULL);
3892   gdb_assert (new_gdbarch->initialized_p);
3893   current_gdbarch_swap_out_hack ();
3894   current_gdbarch_swap_in_hack (new_gdbarch);
3895   architecture_changed_event ();
3896   reinit_frame_cache ();
3897 }
3898
3899 extern void _initialize_gdbarch (void);
3900
3901 void
3902 _initialize_gdbarch (void)
3903 {
3904   struct cmd_list_element *c;
3905
3906   add_setshow_zinteger_cmd ("arch", class_maintenance, &gdbarch_debug, _("\
3907 Set architecture debugging."), _("\
3908 Show architecture debugging."), _("\
3909 When non-zero, architecture debugging is enabled."),
3910                             NULL,
3911                             show_gdbarch_debug,
3912                             &setdebuglist, &showdebuglist);
3913 }