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