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