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