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