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