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