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