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