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