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