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