X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fgdbarch.c;h=3c2df6d5c2bf3f8ecf02d4a17ca5c4c2258c67da;hb=d50355b63cf93537c82e0eeb1b680acf493e7e73;hp=2de3360e1c105272cdb1f058e0e48032a7cde5bb;hpb=4e40929968103f27fba096429d4df7e1be8b80e6;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c index 2de3360e1c..3c2df6d5c2 100644 --- a/gdb/gdbarch.c +++ b/gdb/gdbarch.c @@ -1,7 +1,7 @@ /* *INDENT-OFF* */ /* THIS FILE IS GENERATED */ /* Dynamic architecture support for GDB, the GNU debugger. - Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GDB. @@ -62,25 +62,19 @@ #include "floatformat.h" #include "gdb_assert.h" +#include "gdb_string.h" #include "gdb-events.h" /* Static function declarations */ static void verify_gdbarch (struct gdbarch *gdbarch); static void alloc_gdbarch_data (struct gdbarch *); -static void init_gdbarch_data (struct gdbarch *); static void free_gdbarch_data (struct gdbarch *); static void init_gdbarch_swap (struct gdbarch *); +static void clear_gdbarch_swap (struct gdbarch *); static void swapout_gdbarch_swap (struct gdbarch *); static void swapin_gdbarch_swap (struct gdbarch *); -/* Convenience macro for allocting typesafe memory. */ - -#ifndef XMALLOC -#define XMALLOC(TYPE) (TYPE*) xmalloc (sizeof (TYPE)) -#endif - - /* Non-zero if we want to trace architecture code. */ #ifndef GDBARCH_DEBUG @@ -93,6 +87,8 @@ int gdbarch_debug = GDBARCH_DEBUG; struct gdbarch { + /* Has this architecture been fully initialized? */ + int initialized_p; /* basic architectural information */ const struct bfd_arch_info * bfd_arch_info; int byte_order; @@ -145,24 +141,22 @@ struct gdbarch int addr_bit; int bfd_vma_bit; int char_signed; - int ieee_float; gdbarch_read_pc_ftype *read_pc; gdbarch_write_pc_ftype *write_pc; gdbarch_read_fp_ftype *read_fp; - gdbarch_write_fp_ftype *write_fp; gdbarch_read_sp_ftype *read_sp; gdbarch_write_sp_ftype *write_sp; gdbarch_virtual_frame_pointer_ftype *virtual_frame_pointer; - gdbarch_register_read_ftype *register_read; - gdbarch_register_write_ftype *register_write; + gdbarch_pseudo_register_read_ftype *pseudo_register_read; + gdbarch_pseudo_register_write_ftype *pseudo_register_write; int num_regs; int num_pseudo_regs; int sp_regnum; int fp_regnum; int pc_regnum; + int ps_regnum; int fp0_regnum; int npc_regnum; - int nnpc_regnum; gdbarch_stab_reg_to_regnum_ftype *stab_reg_to_regnum; gdbarch_ecoff_reg_to_regnum_ftype *ecoff_reg_to_regnum; gdbarch_dwarf_reg_to_regnum_ftype *dwarf_reg_to_regnum; @@ -178,10 +172,13 @@ struct gdbarch int max_register_virtual_size; gdbarch_register_virtual_type_ftype *register_virtual_type; gdbarch_do_registers_info_ftype *do_registers_info; + gdbarch_print_float_info_ftype *print_float_info; + gdbarch_print_vector_info_ftype *print_vector_info; gdbarch_register_sim_regno_ftype *register_sim_regno; gdbarch_register_bytes_ok_ftype *register_bytes_ok; gdbarch_cannot_fetch_register_ftype *cannot_fetch_register; gdbarch_cannot_store_register_ftype *cannot_store_register; + gdbarch_get_longjmp_target_ftype *get_longjmp_target; int use_generic_dummy_frames; int call_dummy_location; gdbarch_call_dummy_address_ftype *call_dummy_address; @@ -205,13 +202,15 @@ struct gdbarch gdbarch_register_convertible_ftype *register_convertible; gdbarch_register_convert_to_virtual_ftype *register_convert_to_virtual; gdbarch_register_convert_to_raw_ftype *register_convert_to_raw; - gdbarch_fetch_pseudo_register_ftype *fetch_pseudo_register; - gdbarch_store_pseudo_register_ftype *store_pseudo_register; + gdbarch_convert_register_p_ftype *convert_register_p; + gdbarch_register_to_value_ftype *register_to_value; + gdbarch_value_to_register_ftype *value_to_register; gdbarch_pointer_to_address_ftype *pointer_to_address; gdbarch_address_to_pointer_ftype *address_to_pointer; gdbarch_integer_to_address_ftype *integer_to_address; gdbarch_return_value_on_stack_ftype *return_value_on_stack; gdbarch_extract_return_value_ftype *extract_return_value; + gdbarch_deprecated_extract_return_value_ftype *deprecated_extract_return_value; gdbarch_push_arguments_ftype *push_arguments; gdbarch_push_dummy_frame_ftype *push_dummy_frame; gdbarch_push_return_address_ftype *push_return_address; @@ -219,6 +218,7 @@ struct gdbarch gdbarch_store_struct_return_ftype *store_struct_return; gdbarch_store_return_value_ftype *store_return_value; gdbarch_extract_struct_value_address_ftype *extract_struct_value_address; + gdbarch_deprecated_extract_struct_value_address_ftype *deprecated_extract_struct_value_address; gdbarch_use_struct_convention_ftype *use_struct_convention; gdbarch_frame_init_saved_regs_ftype *frame_init_saved_regs; gdbarch_init_extra_frame_info_ftype *init_extra_frame_info; @@ -251,13 +251,18 @@ struct gdbarch const struct floatformat * long_double_format; gdbarch_convert_from_func_ptr_addr_ftype *convert_from_func_ptr_addr; gdbarch_addr_bits_remove_ftype *addr_bits_remove; + gdbarch_smash_text_address_ftype *smash_text_address; gdbarch_software_single_step_ftype *software_single_step; gdbarch_print_insn_ftype *print_insn; gdbarch_skip_trampoline_code_ftype *skip_trampoline_code; gdbarch_in_solib_call_trampoline_ftype *in_solib_call_trampoline; + gdbarch_in_solib_return_trampoline_ftype *in_solib_return_trampoline; + gdbarch_pc_in_sigtramp_ftype *pc_in_sigtramp; gdbarch_in_function_epilogue_p_ftype *in_function_epilogue_p; gdbarch_construct_inferior_arguments_ftype *construct_inferior_arguments; gdbarch_dwarf2_build_frame_info_ftype *dwarf2_build_frame_info; + gdbarch_elf_make_msymbol_special_ftype *elf_make_msymbol_special; + gdbarch_coff_make_msymbol_special_ftype *coff_make_msymbol_special; }; @@ -268,9 +273,10 @@ extern const struct bfd_arch_info bfd_default_arch_struct; struct gdbarch startup_gdbarch = { + 1, /* Always initialized. */ /* basic architecture information */ &bfd_default_arch_struct, - BIG_ENDIAN, + BFD_ENDIAN_BIG, /* target specific vector and its dump routine */ NULL, NULL, /*per-architecture data-pointers and swap regions */ @@ -297,6 +303,11 @@ struct gdbarch startup_gdbarch = 0, 0, 0, + -1, + -1, + -1, + -1, + 0, 0, 0, 0, @@ -306,6 +317,11 @@ struct gdbarch startup_gdbarch = 0, 0, 0, + generic_register_byte, + generic_register_size, + 0, + generic_register_size, + 0, 0, 0, 0, @@ -314,9 +330,7 @@ struct gdbarch startup_gdbarch = 0, 0, 0, - generic_register_raw_size, 0, - generic_register_virtual_size, 0, 0, 0, @@ -343,7 +357,6 @@ struct gdbarch startup_gdbarch = 0, 0, 0, - generic_get_saved_register, 0, 0, 0, @@ -400,6 +413,8 @@ struct gdbarch startup_gdbarch = generic_in_function_epilogue_p, construct_inferior_arguments, 0, + 0, + 0, /* startup_gdbarch() */ }; @@ -408,10 +423,13 @@ struct gdbarch *current_gdbarch = &startup_gdbarch; /* Do any initialization needed for a non-multiarch configuration after the _initialize_MODULE functions have been run. */ void -initialize_non_multiarch () +initialize_non_multiarch (void) { alloc_gdbarch_data (&startup_gdbarch); - init_gdbarch_data (&startup_gdbarch); + /* Ensure that all swap areas are zeroed so that they again think + they are starting from scratch. */ + clear_gdbarch_swap (&startup_gdbarch); + init_gdbarch_swap (&startup_gdbarch); } @@ -445,14 +463,13 @@ gdbarch_alloc (const struct gdbarch_info *info, current_gdbarch->long_long_bit = 2*TARGET_LONG_BIT; current_gdbarch->float_bit = 4*TARGET_CHAR_BIT; current_gdbarch->double_bit = 8*TARGET_CHAR_BIT; - current_gdbarch->long_double_bit = 2*TARGET_DOUBLE_BIT; + current_gdbarch->long_double_bit = 8*TARGET_CHAR_BIT; current_gdbarch->ptr_bit = TARGET_INT_BIT; current_gdbarch->bfd_vma_bit = TARGET_ARCHITECTURE->bits_per_address; current_gdbarch->char_signed = -1; current_gdbarch->read_pc = generic_target_read_pc; current_gdbarch->write_pc = generic_target_write_pc; current_gdbarch->read_fp = generic_target_read_fp; - current_gdbarch->write_fp = generic_target_write_fp; current_gdbarch->read_sp = generic_target_read_sp; current_gdbarch->write_sp = generic_target_write_sp; current_gdbarch->virtual_frame_pointer = legacy_virtual_frame_pointer; @@ -460,9 +477,9 @@ gdbarch_alloc (const struct gdbarch_info *info, current_gdbarch->sp_regnum = -1; current_gdbarch->fp_regnum = -1; current_gdbarch->pc_regnum = -1; + current_gdbarch->ps_regnum = -1; current_gdbarch->fp0_regnum = -1; current_gdbarch->npc_regnum = -1; - current_gdbarch->nnpc_regnum = -1; current_gdbarch->stab_reg_to_regnum = no_op_reg_to_regnum; current_gdbarch->ecoff_reg_to_regnum = no_op_reg_to_regnum; current_gdbarch->dwarf_reg_to_regnum = no_op_reg_to_regnum; @@ -471,10 +488,13 @@ gdbarch_alloc (const struct gdbarch_info *info, current_gdbarch->register_name = legacy_register_name; current_gdbarch->register_size = -1; current_gdbarch->register_bytes = -1; + current_gdbarch->register_byte = generic_register_byte; + current_gdbarch->register_raw_size = generic_register_size; current_gdbarch->max_register_raw_size = -1; + current_gdbarch->register_virtual_size = generic_register_size; current_gdbarch->max_register_virtual_size = -1; current_gdbarch->do_registers_info = do_registers_info; - current_gdbarch->register_sim_regno = default_register_sim_regno; + current_gdbarch->register_sim_regno = legacy_register_sim_regno; current_gdbarch->cannot_fetch_register = cannot_register_not; current_gdbarch->cannot_store_register = cannot_register_not; current_gdbarch->use_generic_dummy_frames = -1; @@ -489,10 +509,16 @@ gdbarch_alloc (const struct gdbarch_info *info, current_gdbarch->init_frame_pc_first = init_frame_pc_noop; current_gdbarch->init_frame_pc = init_frame_pc_default; current_gdbarch->coerce_float_to_double = default_coerce_float_to_double; + current_gdbarch->get_saved_register = generic_unwind_get_saved_register; current_gdbarch->register_convertible = generic_register_convertible_not; + current_gdbarch->convert_register_p = legacy_convert_register_p; + current_gdbarch->register_to_value = legacy_register_to_value; + current_gdbarch->value_to_register = legacy_value_to_register; current_gdbarch->pointer_to_address = unsigned_pointer_to_address; current_gdbarch->address_to_pointer = unsigned_address_to_pointer; current_gdbarch->return_value_on_stack = generic_return_value_on_stack_not; + current_gdbarch->extract_return_value = legacy_extract_return_value; + current_gdbarch->push_arguments = default_push_arguments; current_gdbarch->use_struct_convention = generic_use_struct_convention; current_gdbarch->prologue_frameless_p = generic_prologue_frameless_p; current_gdbarch->breakpoint_from_pc = legacy_breakpoint_from_pc; @@ -504,14 +530,20 @@ gdbarch_alloc (const struct gdbarch_info *info, current_gdbarch->remote_translate_xfer_address = generic_remote_translate_xfer_address; current_gdbarch->frame_args_skip = -1; current_gdbarch->frameless_function_invocation = generic_frameless_function_invocation_not; + current_gdbarch->frame_chain_valid = generic_func_frame_chain_valid; current_gdbarch->extra_stack_alignment_needed = 1; current_gdbarch->convert_from_func_ptr_addr = core_addr_identity; current_gdbarch->addr_bits_remove = core_addr_identity; + current_gdbarch->smash_text_address = core_addr_identity; current_gdbarch->print_insn = legacy_print_insn; current_gdbarch->skip_trampoline_code = generic_skip_trampoline_code; current_gdbarch->in_solib_call_trampoline = generic_in_solib_call_trampoline; + current_gdbarch->in_solib_return_trampoline = generic_in_solib_return_trampoline; + current_gdbarch->pc_in_sigtramp = legacy_pc_in_sigtramp; current_gdbarch->in_function_epilogue_p = generic_in_function_epilogue_p; current_gdbarch->construct_inferior_arguments = construct_inferior_arguments; + current_gdbarch->elf_make_msymbol_special = default_elf_make_msymbol_special; + current_gdbarch->coff_make_msymbol_special = default_coff_make_msymbol_special; /* gdbarch_alloc() */ return current_gdbarch; @@ -548,7 +580,7 @@ verify_gdbarch (struct gdbarch *gdbarch) log = mem_fileopen (); cleanups = make_cleanup_ui_file_delete (log); /* fundamental */ - if (gdbarch->byte_order == 0) + if (gdbarch->byte_order == BFD_ENDIAN_UNKNOWN) fprintf_unfiltered (log, "\n\tbyte-order"); if (gdbarch->bfd_arch_info == NULL) fprintf_unfiltered (log, "\n\tbfd_arch_info"); @@ -566,186 +598,172 @@ verify_gdbarch (struct gdbarch *gdbarch) /* Skip verify of bfd_vma_bit, invalid_p == 0 */ if (gdbarch->char_signed == -1) gdbarch->char_signed = 1; - /* Skip verify of ieee_float, invalid_p == 0 */ /* Skip verify of read_pc, invalid_p == 0 */ /* Skip verify of write_pc, invalid_p == 0 */ /* Skip verify of read_fp, invalid_p == 0 */ - /* Skip verify of write_fp, invalid_p == 0 */ /* Skip verify of read_sp, invalid_p == 0 */ /* Skip verify of write_sp, invalid_p == 0 */ /* Skip verify of virtual_frame_pointer, invalid_p == 0 */ - /* Skip verify of register_read, has predicate */ - /* Skip verify of register_write, has predicate */ - if ((GDB_MULTI_ARCH >= 2) + /* Skip verify of pseudo_register_read, has predicate */ + /* Skip verify of pseudo_register_write, has predicate */ + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->num_regs == -1)) fprintf_unfiltered (log, "\n\tnum_regs"); /* Skip verify of num_pseudo_regs, invalid_p == 0 */ - if ((GDB_MULTI_ARCH >= 2) - && (gdbarch->sp_regnum == -1)) - fprintf_unfiltered (log, "\n\tsp_regnum"); - if ((GDB_MULTI_ARCH >= 2) - && (gdbarch->fp_regnum == -1)) - fprintf_unfiltered (log, "\n\tfp_regnum"); - if ((GDB_MULTI_ARCH >= 2) - && (gdbarch->pc_regnum == -1)) - fprintf_unfiltered (log, "\n\tpc_regnum"); + /* Skip verify of sp_regnum, invalid_p == 0 */ + /* Skip verify of fp_regnum, invalid_p == 0 */ + /* Skip verify of pc_regnum, invalid_p == 0 */ + /* Skip verify of ps_regnum, invalid_p == 0 */ /* Skip verify of fp0_regnum, invalid_p == 0 */ /* Skip verify of npc_regnum, invalid_p == 0 */ - /* Skip verify of nnpc_regnum, invalid_p == 0 */ /* Skip verify of stab_reg_to_regnum, invalid_p == 0 */ /* Skip verify of ecoff_reg_to_regnum, invalid_p == 0 */ /* Skip verify of dwarf_reg_to_regnum, invalid_p == 0 */ /* Skip verify of sdb_reg_to_regnum, invalid_p == 0 */ /* Skip verify of dwarf2_reg_to_regnum, invalid_p == 0 */ /* Skip verify of register_name, invalid_p == 0 */ - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->register_size == -1)) fprintf_unfiltered (log, "\n\tregister_size"); - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->register_bytes == -1)) fprintf_unfiltered (log, "\n\tregister_bytes"); - if ((GDB_MULTI_ARCH >= 2) - && (gdbarch->register_byte == 0)) - fprintf_unfiltered (log, "\n\tregister_byte"); - if ((GDB_MULTI_ARCH >= 2) - && (gdbarch->register_raw_size == 0)) - fprintf_unfiltered (log, "\n\tregister_raw_size"); - if ((GDB_MULTI_ARCH >= 2) + /* Skip verify of register_byte, invalid_p == 0 */ + /* Skip verify of register_raw_size, invalid_p == 0 */ + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->max_register_raw_size == -1)) fprintf_unfiltered (log, "\n\tmax_register_raw_size"); - if ((GDB_MULTI_ARCH >= 2) - && (gdbarch->register_virtual_size == 0)) - fprintf_unfiltered (log, "\n\tregister_virtual_size"); - if ((GDB_MULTI_ARCH >= 2) + /* Skip verify of register_virtual_size, invalid_p == 0 */ + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->max_register_virtual_size == -1)) fprintf_unfiltered (log, "\n\tmax_register_virtual_size"); - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->register_virtual_type == 0)) fprintf_unfiltered (log, "\n\tregister_virtual_type"); /* Skip verify of do_registers_info, invalid_p == 0 */ + /* Skip verify of print_float_info, has predicate */ + /* Skip verify of print_vector_info, has predicate */ /* Skip verify of register_sim_regno, invalid_p == 0 */ /* Skip verify of register_bytes_ok, has predicate */ /* Skip verify of cannot_fetch_register, invalid_p == 0 */ /* Skip verify of cannot_store_register, invalid_p == 0 */ - if ((GDB_MULTI_ARCH >= 1) + /* Skip verify of get_longjmp_target, has predicate */ + if ((GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && (gdbarch->use_generic_dummy_frames == -1)) fprintf_unfiltered (log, "\n\tuse_generic_dummy_frames"); - if ((GDB_MULTI_ARCH >= 1) + if ((GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && (gdbarch->call_dummy_location == 0)) fprintf_unfiltered (log, "\n\tcall_dummy_location"); - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->call_dummy_location == AT_ENTRY_POINT && gdbarch->call_dummy_address == 0)) fprintf_unfiltered (log, "\n\tcall_dummy_address"); - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->call_dummy_start_offset == -1)) fprintf_unfiltered (log, "\n\tcall_dummy_start_offset"); - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->call_dummy_breakpoint_offset_p && gdbarch->call_dummy_breakpoint_offset == -1)) fprintf_unfiltered (log, "\n\tcall_dummy_breakpoint_offset"); - if ((GDB_MULTI_ARCH >= 1) + if ((GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && (gdbarch->call_dummy_breakpoint_offset_p == -1)) fprintf_unfiltered (log, "\n\tcall_dummy_breakpoint_offset_p"); - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->call_dummy_length == -1)) fprintf_unfiltered (log, "\n\tcall_dummy_length"); - if ((GDB_MULTI_ARCH >= 1) + if ((GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && (gdbarch->pc_in_call_dummy == 0)) fprintf_unfiltered (log, "\n\tpc_in_call_dummy"); - if ((GDB_MULTI_ARCH >= 1) + if ((GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && (gdbarch->call_dummy_p == -1)) fprintf_unfiltered (log, "\n\tcall_dummy_p"); /* Skip verify of call_dummy_words, invalid_p == 0 */ /* Skip verify of sizeof_call_dummy_words, invalid_p == 0 */ - if ((GDB_MULTI_ARCH >= 1) + if ((GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && (gdbarch->call_dummy_stack_adjust_p == -1)) fprintf_unfiltered (log, "\n\tcall_dummy_stack_adjust_p"); - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->call_dummy_stack_adjust_p && gdbarch->call_dummy_stack_adjust == 0)) fprintf_unfiltered (log, "\n\tcall_dummy_stack_adjust"); - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->fix_call_dummy == 0)) fprintf_unfiltered (log, "\n\tfix_call_dummy"); /* Skip verify of init_frame_pc_first, invalid_p == 0 */ /* Skip verify of init_frame_pc, invalid_p == 0 */ /* Skip verify of coerce_float_to_double, invalid_p == 0 */ - if ((GDB_MULTI_ARCH >= 1) - && (gdbarch->get_saved_register == 0)) - fprintf_unfiltered (log, "\n\tget_saved_register"); + /* Skip verify of get_saved_register, invalid_p == 0 */ /* Skip verify of register_convertible, invalid_p == 0 */ /* Skip verify of register_convert_to_virtual, invalid_p == 0 */ /* Skip verify of register_convert_to_raw, invalid_p == 0 */ - /* Skip verify of fetch_pseudo_register, has predicate */ - /* Skip verify of store_pseudo_register, has predicate */ + /* Skip verify of convert_register_p, invalid_p == 0 */ + /* Skip verify of register_to_value, invalid_p == 0 */ + /* Skip verify of value_to_register, invalid_p == 0 */ /* Skip verify of pointer_to_address, invalid_p == 0 */ /* Skip verify of address_to_pointer, invalid_p == 0 */ /* Skip verify of integer_to_address, has predicate */ /* Skip verify of return_value_on_stack, invalid_p == 0 */ - if ((GDB_MULTI_ARCH >= 2) - && (gdbarch->extract_return_value == 0)) - fprintf_unfiltered (log, "\n\textract_return_value"); - if ((GDB_MULTI_ARCH >= 1) - && (gdbarch->push_arguments == 0)) - fprintf_unfiltered (log, "\n\tpush_arguments"); - if ((GDB_MULTI_ARCH >= 2) + /* Skip verify of extract_return_value, invalid_p == 0 */ + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) + && (gdbarch->deprecated_extract_return_value == 0)) + fprintf_unfiltered (log, "\n\tdeprecated_extract_return_value"); + /* Skip verify of push_arguments, invalid_p == 0 */ + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->push_dummy_frame == 0)) fprintf_unfiltered (log, "\n\tpush_dummy_frame"); /* Skip verify of push_return_address, has predicate */ - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->pop_frame == 0)) fprintf_unfiltered (log, "\n\tpop_frame"); - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->store_struct_return == 0)) fprintf_unfiltered (log, "\n\tstore_struct_return"); - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->store_return_value == 0)) fprintf_unfiltered (log, "\n\tstore_return_value"); /* Skip verify of extract_struct_value_address, has predicate */ + /* Skip verify of deprecated_extract_struct_value_address, has predicate */ /* Skip verify of use_struct_convention, invalid_p == 0 */ - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->frame_init_saved_regs == 0)) fprintf_unfiltered (log, "\n\tframe_init_saved_regs"); /* Skip verify of init_extra_frame_info, has predicate */ - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->skip_prologue == 0)) fprintf_unfiltered (log, "\n\tskip_prologue"); /* Skip verify of prologue_frameless_p, invalid_p == 0 */ - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->inner_than == 0)) fprintf_unfiltered (log, "\n\tinner_than"); /* Skip verify of breakpoint_from_pc, invalid_p == 0 */ /* Skip verify of memory_insert_breakpoint, invalid_p == 0 */ /* Skip verify of memory_remove_breakpoint, invalid_p == 0 */ - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->decr_pc_after_break == -1)) fprintf_unfiltered (log, "\n\tdecr_pc_after_break"); /* Skip verify of prepare_to_proceed, invalid_p == 0 */ - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->function_start_offset == -1)) fprintf_unfiltered (log, "\n\tfunction_start_offset"); /* Skip verify of remote_translate_xfer_address, invalid_p == 0 */ - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->frame_args_skip == -1)) fprintf_unfiltered (log, "\n\tframe_args_skip"); /* Skip verify of frameless_function_invocation, invalid_p == 0 */ - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->frame_chain == 0)) fprintf_unfiltered (log, "\n\tframe_chain"); - if ((GDB_MULTI_ARCH >= 1) - && (gdbarch->frame_chain_valid == 0)) - fprintf_unfiltered (log, "\n\tframe_chain_valid"); - if ((GDB_MULTI_ARCH >= 2) + /* Skip verify of frame_chain_valid, invalid_p == 0 */ + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->frame_saved_pc == 0)) fprintf_unfiltered (log, "\n\tframe_saved_pc"); - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->frame_args_address == 0)) fprintf_unfiltered (log, "\n\tframe_args_address"); - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->frame_locals_address == 0)) fprintf_unfiltered (log, "\n\tframe_locals_address"); - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->saved_pc_after_call == 0)) fprintf_unfiltered (log, "\n\tsaved_pc_after_call"); - if ((GDB_MULTI_ARCH >= 2) + if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->frame_num_args == 0)) fprintf_unfiltered (log, "\n\tframe_num_args"); /* Skip verify of stack_align, has predicate */ @@ -757,16 +775,21 @@ verify_gdbarch (struct gdbarch *gdbarch) if (gdbarch->double_format == 0) gdbarch->double_format = default_double_format (gdbarch); if (gdbarch->long_double_format == 0) - gdbarch->long_double_format = &floatformat_unknown; + gdbarch->long_double_format = default_double_format (gdbarch); /* Skip verify of convert_from_func_ptr_addr, invalid_p == 0 */ /* Skip verify of addr_bits_remove, invalid_p == 0 */ + /* Skip verify of smash_text_address, invalid_p == 0 */ /* Skip verify of software_single_step, has predicate */ /* Skip verify of print_insn, invalid_p == 0 */ /* Skip verify of skip_trampoline_code, invalid_p == 0 */ /* Skip verify of in_solib_call_trampoline, invalid_p == 0 */ + /* Skip verify of in_solib_return_trampoline, invalid_p == 0 */ + /* Skip verify of pc_in_sigtramp, invalid_p == 0 */ /* Skip verify of in_function_epilogue_p, invalid_p == 0 */ /* Skip verify of construct_inferior_arguments, invalid_p == 0 */ /* Skip verify of dwarf2_build_frame_info, has predicate */ + /* Skip verify of elf_make_msymbol_special, invalid_p == 0 */ + /* Skip verify of coff_make_msymbol_special, invalid_p == 0 */ buf = ui_file_xstrdup (log, &dummy); make_cleanup (xfree, buf); if (strlen (buf) > 0) @@ -797,12 +820,12 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) (long) current_gdbarch->in_function_epilogue_p); if (GDB_MULTI_ARCH) fprintf_unfiltered (file, - "gdbarch_dump: register_read = 0x%08lx\n", - (long) current_gdbarch->register_read); + "gdbarch_dump: pseudo_register_read = 0x%08lx\n", + (long) current_gdbarch->pseudo_register_read); if (GDB_MULTI_ARCH) fprintf_unfiltered (file, - "gdbarch_dump: register_write = 0x%08lx\n", - (long) current_gdbarch->register_write); + "gdbarch_dump: pseudo_register_write = 0x%08lx\n", + (long) current_gdbarch->pseudo_register_write); #ifdef ADDRESS_TO_POINTER #if GDB_MULTI_ARCH /* Macro might contain `[{}]' when not multi-arch */ @@ -833,16 +856,16 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: BELIEVE_PCC_PROMOTION # %s\n", XSTRING (BELIEVE_PCC_PROMOTION)); fprintf_unfiltered (file, - "gdbarch_dump: BELIEVE_PCC_PROMOTION = %ld\n", - (long) BELIEVE_PCC_PROMOTION); + "gdbarch_dump: BELIEVE_PCC_PROMOTION = %d\n", + BELIEVE_PCC_PROMOTION); #endif #ifdef BELIEVE_PCC_PROMOTION_TYPE fprintf_unfiltered (file, "gdbarch_dump: BELIEVE_PCC_PROMOTION_TYPE # %s\n", XSTRING (BELIEVE_PCC_PROMOTION_TYPE)); fprintf_unfiltered (file, - "gdbarch_dump: BELIEVE_PCC_PROMOTION_TYPE = %ld\n", - (long) BELIEVE_PCC_PROMOTION_TYPE); + "gdbarch_dump: BELIEVE_PCC_PROMOTION_TYPE = %d\n", + BELIEVE_PCC_PROMOTION_TYPE); #endif #ifdef BREAKPOINT_FROM_PC fprintf_unfiltered (file, @@ -880,8 +903,8 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: CALL_DUMMY_BREAKPOINT_OFFSET_P # %s\n", XSTRING (CALL_DUMMY_BREAKPOINT_OFFSET_P)); fprintf_unfiltered (file, - "gdbarch_dump: CALL_DUMMY_BREAKPOINT_OFFSET_P = %ld\n", - (long) CALL_DUMMY_BREAKPOINT_OFFSET_P); + "gdbarch_dump: CALL_DUMMY_BREAKPOINT_OFFSET_P = %d\n", + CALL_DUMMY_BREAKPOINT_OFFSET_P); #endif #ifdef CALL_DUMMY_LENGTH fprintf_unfiltered (file, @@ -889,24 +912,24 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) XSTRING (CALL_DUMMY_LENGTH)); if (CALL_DUMMY_LOCATION == BEFORE_TEXT_END || CALL_DUMMY_LOCATION == AFTER_TEXT_END) fprintf_unfiltered (file, - "gdbarch_dump: CALL_DUMMY_LENGTH = %ld\n", - (long) CALL_DUMMY_LENGTH); + "gdbarch_dump: CALL_DUMMY_LENGTH = %d\n", + CALL_DUMMY_LENGTH); #endif #ifdef CALL_DUMMY_LOCATION fprintf_unfiltered (file, "gdbarch_dump: CALL_DUMMY_LOCATION # %s\n", XSTRING (CALL_DUMMY_LOCATION)); fprintf_unfiltered (file, - "gdbarch_dump: CALL_DUMMY_LOCATION = %ld\n", - (long) CALL_DUMMY_LOCATION); + "gdbarch_dump: CALL_DUMMY_LOCATION = %d\n", + CALL_DUMMY_LOCATION); #endif #ifdef CALL_DUMMY_P fprintf_unfiltered (file, "gdbarch_dump: CALL_DUMMY_P # %s\n", XSTRING (CALL_DUMMY_P)); fprintf_unfiltered (file, - "gdbarch_dump: CALL_DUMMY_P = %ld\n", - (long) CALL_DUMMY_P); + "gdbarch_dump: CALL_DUMMY_P = %d\n", + CALL_DUMMY_P); #endif #ifdef CALL_DUMMY_STACK_ADJUST fprintf_unfiltered (file, @@ -973,6 +996,20 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: COERCE_FLOAT_TO_DOUBLE = 0x%08lx\n", (long) current_gdbarch->coerce_float_to_double /*COERCE_FLOAT_TO_DOUBLE ()*/); +#endif +#ifdef COFF_MAKE_MSYMBOL_SPECIAL +#if GDB_MULTI_ARCH + /* Macro might contain `[{}]' when not multi-arch */ + fprintf_unfiltered (file, + "gdbarch_dump: %s # %s\n", + "COFF_MAKE_MSYMBOL_SPECIAL(val, msym)", + XSTRING (COFF_MAKE_MSYMBOL_SPECIAL (val, msym))); +#endif + if (GDB_MULTI_ARCH) + fprintf_unfiltered (file, + "gdbarch_dump: COFF_MAKE_MSYMBOL_SPECIAL = 0x%08lx\n", + (long) current_gdbarch->coff_make_msymbol_special + /*COFF_MAKE_MSYMBOL_SPECIAL ()*/); #endif if (GDB_MULTI_ARCH) fprintf_unfiltered (file, @@ -989,6 +1026,17 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) (long) current_gdbarch->convert_from_func_ptr_addr /*CONVERT_FROM_FUNC_PTR_ADDR ()*/); #endif +#ifdef CONVERT_REGISTER_P + fprintf_unfiltered (file, + "gdbarch_dump: %s # %s\n", + "CONVERT_REGISTER_P(regnum)", + XSTRING (CONVERT_REGISTER_P (regnum))); + if (GDB_MULTI_ARCH) + fprintf_unfiltered (file, + "gdbarch_dump: CONVERT_REGISTER_P = 0x%08lx\n", + (long) current_gdbarch->convert_register_p + /*CONVERT_REGISTER_P ()*/); +#endif #ifdef DECR_PC_AFTER_BREAK fprintf_unfiltered (file, "gdbarch_dump: DECR_PC_AFTER_BREAK # %s\n", @@ -997,6 +1045,31 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: DECR_PC_AFTER_BREAK = %ld\n", (long) DECR_PC_AFTER_BREAK); #endif +#ifdef DEPRECATED_EXTRACT_RETURN_VALUE +#if GDB_MULTI_ARCH + /* Macro might contain `[{}]' when not multi-arch */ + fprintf_unfiltered (file, + "gdbarch_dump: %s # %s\n", + "DEPRECATED_EXTRACT_RETURN_VALUE(type, regbuf, valbuf)", + XSTRING (DEPRECATED_EXTRACT_RETURN_VALUE (type, regbuf, valbuf))); +#endif + if (GDB_MULTI_ARCH) + fprintf_unfiltered (file, + "gdbarch_dump: DEPRECATED_EXTRACT_RETURN_VALUE = 0x%08lx\n", + (long) current_gdbarch->deprecated_extract_return_value + /*DEPRECATED_EXTRACT_RETURN_VALUE ()*/); +#endif +#ifdef DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS + fprintf_unfiltered (file, + "gdbarch_dump: %s # %s\n", + "DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS(regbuf)", + XSTRING (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS (regbuf))); + if (GDB_MULTI_ARCH) + fprintf_unfiltered (file, + "gdbarch_dump: DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS = 0x%08lx\n", + (long) current_gdbarch->deprecated_extract_struct_value_address + /*DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS ()*/); +#endif #ifdef DO_REGISTERS_INFO #if GDB_MULTI_ARCH /* Macro might contain `[{}]' when not multi-arch */ @@ -1058,13 +1131,27 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) (long) current_gdbarch->ecoff_reg_to_regnum /*ECOFF_REG_TO_REGNUM ()*/); #endif +#ifdef ELF_MAKE_MSYMBOL_SPECIAL +#if GDB_MULTI_ARCH + /* Macro might contain `[{}]' when not multi-arch */ + fprintf_unfiltered (file, + "gdbarch_dump: %s # %s\n", + "ELF_MAKE_MSYMBOL_SPECIAL(sym, msym)", + XSTRING (ELF_MAKE_MSYMBOL_SPECIAL (sym, msym))); +#endif + if (GDB_MULTI_ARCH) + fprintf_unfiltered (file, + "gdbarch_dump: ELF_MAKE_MSYMBOL_SPECIAL = 0x%08lx\n", + (long) current_gdbarch->elf_make_msymbol_special + /*ELF_MAKE_MSYMBOL_SPECIAL ()*/); +#endif #ifdef EXTRACT_RETURN_VALUE #if GDB_MULTI_ARCH /* Macro might contain `[{}]' when not multi-arch */ fprintf_unfiltered (file, "gdbarch_dump: %s # %s\n", - "EXTRACT_RETURN_VALUE(type, regbuf, valbuf)", - XSTRING (EXTRACT_RETURN_VALUE (type, regbuf, valbuf))); + "EXTRACT_RETURN_VALUE(type, regcache, valbuf)", + XSTRING (EXTRACT_RETURN_VALUE (type, regcache, valbuf))); #endif if (GDB_MULTI_ARCH) fprintf_unfiltered (file, @@ -1075,8 +1162,8 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) #ifdef EXTRACT_STRUCT_VALUE_ADDRESS fprintf_unfiltered (file, "gdbarch_dump: %s # %s\n", - "EXTRACT_STRUCT_VALUE_ADDRESS(regbuf)", - XSTRING (EXTRACT_STRUCT_VALUE_ADDRESS (regbuf))); + "EXTRACT_STRUCT_VALUE_ADDRESS(regcache)", + XSTRING (EXTRACT_STRUCT_VALUE_ADDRESS (regcache))); if (GDB_MULTI_ARCH) fprintf_unfiltered (file, "gdbarch_dump: EXTRACT_STRUCT_VALUE_ADDRESS = 0x%08lx\n", @@ -1088,22 +1175,8 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: EXTRA_STACK_ALIGNMENT_NEEDED # %s\n", XSTRING (EXTRA_STACK_ALIGNMENT_NEEDED)); fprintf_unfiltered (file, - "gdbarch_dump: EXTRA_STACK_ALIGNMENT_NEEDED = %ld\n", - (long) EXTRA_STACK_ALIGNMENT_NEEDED); -#endif -#ifdef FETCH_PSEUDO_REGISTER -#if GDB_MULTI_ARCH - /* Macro might contain `[{}]' when not multi-arch */ - fprintf_unfiltered (file, - "gdbarch_dump: %s # %s\n", - "FETCH_PSEUDO_REGISTER(regnum)", - XSTRING (FETCH_PSEUDO_REGISTER (regnum))); -#endif - if (GDB_MULTI_ARCH) - fprintf_unfiltered (file, - "gdbarch_dump: FETCH_PSEUDO_REGISTER = 0x%08lx\n", - (long) current_gdbarch->fetch_pseudo_register - /*FETCH_PSEUDO_REGISTER ()*/); + "gdbarch_dump: EXTRA_STACK_ALIGNMENT_NEEDED = %d\n", + EXTRA_STACK_ALIGNMENT_NEEDED); #endif #ifdef FIX_CALL_DUMMY #if GDB_MULTI_ARCH @@ -1124,16 +1197,16 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: FP0_REGNUM # %s\n", XSTRING (FP0_REGNUM)); fprintf_unfiltered (file, - "gdbarch_dump: FP0_REGNUM = %ld\n", - (long) FP0_REGNUM); + "gdbarch_dump: FP0_REGNUM = %d\n", + FP0_REGNUM); #endif #ifdef FP_REGNUM fprintf_unfiltered (file, "gdbarch_dump: FP_REGNUM # %s\n", XSTRING (FP_REGNUM)); fprintf_unfiltered (file, - "gdbarch_dump: FP_REGNUM = %ld\n", - (long) FP_REGNUM); + "gdbarch_dump: FP_REGNUM = %d\n", + FP_REGNUM); #endif #ifdef FRAMELESS_FUNCTION_INVOCATION fprintf_unfiltered (file, @@ -1242,6 +1315,17 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: FUNCTION_START_OFFSET = %ld\n", (long) FUNCTION_START_OFFSET); #endif +#ifdef GET_LONGJMP_TARGET + fprintf_unfiltered (file, + "gdbarch_dump: %s # %s\n", + "GET_LONGJMP_TARGET(pc)", + XSTRING (GET_LONGJMP_TARGET (pc))); + if (GDB_MULTI_ARCH) + fprintf_unfiltered (file, + "gdbarch_dump: GET_LONGJMP_TARGET = 0x%08lx\n", + (long) current_gdbarch->get_longjmp_target + /*GET_LONGJMP_TARGET ()*/); +#endif #ifdef GET_SAVED_REGISTER #if GDB_MULTI_ARCH /* Macro might contain `[{}]' when not multi-arch */ @@ -1256,14 +1340,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) (long) current_gdbarch->get_saved_register /*GET_SAVED_REGISTER ()*/); #endif -#ifdef IEEE_FLOAT - fprintf_unfiltered (file, - "gdbarch_dump: IEEE_FLOAT # %s\n", - XSTRING (IEEE_FLOAT)); - fprintf_unfiltered (file, - "gdbarch_dump: IEEE_FLOAT = %ld\n", - (long) IEEE_FLOAT); -#endif #ifdef INIT_EXTRA_FRAME_INFO #if GDB_MULTI_ARCH /* Macro might contain `[{}]' when not multi-arch */ @@ -1339,21 +1415,32 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) (long) current_gdbarch->in_solib_call_trampoline /*IN_SOLIB_CALL_TRAMPOLINE ()*/); #endif +#ifdef IN_SOLIB_RETURN_TRAMPOLINE + fprintf_unfiltered (file, + "gdbarch_dump: %s # %s\n", + "IN_SOLIB_RETURN_TRAMPOLINE(pc, name)", + XSTRING (IN_SOLIB_RETURN_TRAMPOLINE (pc, name))); + if (GDB_MULTI_ARCH) + fprintf_unfiltered (file, + "gdbarch_dump: IN_SOLIB_RETURN_TRAMPOLINE = 0x%08lx\n", + (long) current_gdbarch->in_solib_return_trampoline + /*IN_SOLIB_RETURN_TRAMPOLINE ()*/); +#endif #ifdef MAX_REGISTER_RAW_SIZE fprintf_unfiltered (file, "gdbarch_dump: MAX_REGISTER_RAW_SIZE # %s\n", XSTRING (MAX_REGISTER_RAW_SIZE)); fprintf_unfiltered (file, - "gdbarch_dump: MAX_REGISTER_RAW_SIZE = %ld\n", - (long) MAX_REGISTER_RAW_SIZE); + "gdbarch_dump: MAX_REGISTER_RAW_SIZE = %d\n", + MAX_REGISTER_RAW_SIZE); #endif #ifdef MAX_REGISTER_VIRTUAL_SIZE fprintf_unfiltered (file, "gdbarch_dump: MAX_REGISTER_VIRTUAL_SIZE # %s\n", XSTRING (MAX_REGISTER_VIRTUAL_SIZE)); fprintf_unfiltered (file, - "gdbarch_dump: MAX_REGISTER_VIRTUAL_SIZE = %ld\n", - (long) MAX_REGISTER_VIRTUAL_SIZE); + "gdbarch_dump: MAX_REGISTER_VIRTUAL_SIZE = %d\n", + MAX_REGISTER_VIRTUAL_SIZE); #endif #ifdef MEMORY_INSERT_BREAKPOINT fprintf_unfiltered (file, @@ -1377,45 +1464,37 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) (long) current_gdbarch->memory_remove_breakpoint /*MEMORY_REMOVE_BREAKPOINT ()*/); #endif -#ifdef NNPC_REGNUM - fprintf_unfiltered (file, - "gdbarch_dump: NNPC_REGNUM # %s\n", - XSTRING (NNPC_REGNUM)); - fprintf_unfiltered (file, - "gdbarch_dump: NNPC_REGNUM = %ld\n", - (long) NNPC_REGNUM); -#endif #ifdef NPC_REGNUM fprintf_unfiltered (file, "gdbarch_dump: NPC_REGNUM # %s\n", XSTRING (NPC_REGNUM)); fprintf_unfiltered (file, - "gdbarch_dump: NPC_REGNUM = %ld\n", - (long) NPC_REGNUM); + "gdbarch_dump: NPC_REGNUM = %d\n", + NPC_REGNUM); #endif #ifdef NUM_PSEUDO_REGS fprintf_unfiltered (file, "gdbarch_dump: NUM_PSEUDO_REGS # %s\n", XSTRING (NUM_PSEUDO_REGS)); fprintf_unfiltered (file, - "gdbarch_dump: NUM_PSEUDO_REGS = %ld\n", - (long) NUM_PSEUDO_REGS); + "gdbarch_dump: NUM_PSEUDO_REGS = %d\n", + NUM_PSEUDO_REGS); #endif #ifdef NUM_REGS fprintf_unfiltered (file, "gdbarch_dump: NUM_REGS # %s\n", XSTRING (NUM_REGS)); fprintf_unfiltered (file, - "gdbarch_dump: NUM_REGS = %ld\n", - (long) NUM_REGS); + "gdbarch_dump: NUM_REGS = %d\n", + NUM_REGS); #endif #ifdef PARM_BOUNDARY fprintf_unfiltered (file, "gdbarch_dump: PARM_BOUNDARY # %s\n", XSTRING (PARM_BOUNDARY)); fprintf_unfiltered (file, - "gdbarch_dump: PARM_BOUNDARY = %ld\n", - (long) PARM_BOUNDARY); + "gdbarch_dump: PARM_BOUNDARY = %d\n", + PARM_BOUNDARY); #endif #ifdef PC_IN_CALL_DUMMY fprintf_unfiltered (file, @@ -1428,13 +1507,24 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) (long) current_gdbarch->pc_in_call_dummy /*PC_IN_CALL_DUMMY ()*/); #endif +#ifdef PC_IN_SIGTRAMP + fprintf_unfiltered (file, + "gdbarch_dump: %s # %s\n", + "PC_IN_SIGTRAMP(pc, name)", + XSTRING (PC_IN_SIGTRAMP (pc, name))); + if (GDB_MULTI_ARCH) + fprintf_unfiltered (file, + "gdbarch_dump: PC_IN_SIGTRAMP = 0x%08lx\n", + (long) current_gdbarch->pc_in_sigtramp + /*PC_IN_SIGTRAMP ()*/); +#endif #ifdef PC_REGNUM fprintf_unfiltered (file, "gdbarch_dump: PC_REGNUM # %s\n", XSTRING (PC_REGNUM)); fprintf_unfiltered (file, - "gdbarch_dump: PC_REGNUM = %ld\n", - (long) PC_REGNUM); + "gdbarch_dump: PC_REGNUM = %d\n", + PC_REGNUM); #endif #ifdef POINTER_TO_ADDRESS fprintf_unfiltered (file, @@ -1472,6 +1562,14 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) (long) current_gdbarch->prepare_to_proceed /*PREPARE_TO_PROCEED ()*/); #endif + if (GDB_MULTI_ARCH) + fprintf_unfiltered (file, + "gdbarch_dump: print_float_info = 0x%08lx\n", + (long) current_gdbarch->print_float_info); + if (GDB_MULTI_ARCH) + fprintf_unfiltered (file, + "gdbarch_dump: print_vector_info = 0x%08lx\n", + (long) current_gdbarch->print_vector_info); #ifdef PROLOGUE_FRAMELESS_P fprintf_unfiltered (file, "gdbarch_dump: %s # %s\n", @@ -1483,6 +1581,14 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) (long) current_gdbarch->prologue_frameless_p /*PROLOGUE_FRAMELESS_P ()*/); #endif +#ifdef PS_REGNUM + fprintf_unfiltered (file, + "gdbarch_dump: PS_REGNUM # %s\n", + XSTRING (PS_REGNUM)); + fprintf_unfiltered (file, + "gdbarch_dump: PS_REGNUM = %d\n", + PS_REGNUM); +#endif #ifdef PUSH_ARGUMENTS fprintf_unfiltered (file, "gdbarch_dump: %s # %s\n", @@ -1535,8 +1641,8 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: REGISTER_BYTES # %s\n", XSTRING (REGISTER_BYTES)); fprintf_unfiltered (file, - "gdbarch_dump: REGISTER_BYTES = %ld\n", - (long) REGISTER_BYTES); + "gdbarch_dump: REGISTER_BYTES = %d\n", + REGISTER_BYTES); #endif #ifdef REGISTER_BYTES_OK fprintf_unfiltered (file, @@ -1626,8 +1732,22 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: REGISTER_SIZE # %s\n", XSTRING (REGISTER_SIZE)); fprintf_unfiltered (file, - "gdbarch_dump: REGISTER_SIZE = %ld\n", - (long) REGISTER_SIZE); + "gdbarch_dump: REGISTER_SIZE = %d\n", + REGISTER_SIZE); +#endif +#ifdef REGISTER_TO_VALUE +#if GDB_MULTI_ARCH + /* Macro might contain `[{}]' when not multi-arch */ + fprintf_unfiltered (file, + "gdbarch_dump: %s # %s\n", + "REGISTER_TO_VALUE(regnum, type, from, to)", + XSTRING (REGISTER_TO_VALUE (regnum, type, from, to))); +#endif + if (GDB_MULTI_ARCH) + fprintf_unfiltered (file, + "gdbarch_dump: REGISTER_TO_VALUE = 0x%08lx\n", + (long) current_gdbarch->register_to_value + /*REGISTER_TO_VALUE ()*/); #endif #ifdef REGISTER_VIRTUAL_SIZE fprintf_unfiltered (file, @@ -1753,6 +1873,17 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) (long) current_gdbarch->skip_trampoline_code /*SKIP_TRAMPOLINE_CODE ()*/); #endif +#ifdef SMASH_TEXT_ADDRESS + fprintf_unfiltered (file, + "gdbarch_dump: %s # %s\n", + "SMASH_TEXT_ADDRESS(addr)", + XSTRING (SMASH_TEXT_ADDRESS (addr))); + if (GDB_MULTI_ARCH) + fprintf_unfiltered (file, + "gdbarch_dump: SMASH_TEXT_ADDRESS = 0x%08lx\n", + (long) current_gdbarch->smash_text_address + /*SMASH_TEXT_ADDRESS ()*/); +#endif #ifdef SOFTWARE_SINGLE_STEP #if GDB_MULTI_ARCH /* Macro might contain `[{}]' when not multi-arch */ @@ -1772,8 +1903,8 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: SP_REGNUM # %s\n", XSTRING (SP_REGNUM)); fprintf_unfiltered (file, - "gdbarch_dump: SP_REGNUM = %ld\n", - (long) SP_REGNUM); + "gdbarch_dump: SP_REGNUM = %d\n", + SP_REGNUM); #endif #ifdef STAB_REG_TO_REGNUM fprintf_unfiltered (file, @@ -1797,20 +1928,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) (long) current_gdbarch->stack_align /*STACK_ALIGN ()*/); #endif -#ifdef STORE_PSEUDO_REGISTER -#if GDB_MULTI_ARCH - /* Macro might contain `[{}]' when not multi-arch */ - fprintf_unfiltered (file, - "gdbarch_dump: %s # %s\n", - "STORE_PSEUDO_REGISTER(regnum)", - XSTRING (STORE_PSEUDO_REGISTER (regnum))); -#endif - if (GDB_MULTI_ARCH) - fprintf_unfiltered (file, - "gdbarch_dump: STORE_PSEUDO_REGISTER = 0x%08lx\n", - (long) current_gdbarch->store_pseudo_register - /*STORE_PSEUDO_REGISTER ()*/); -#endif #ifdef STORE_RETURN_VALUE #if GDB_MULTI_ARCH /* Macro might contain `[{}]' when not multi-arch */ @@ -1844,8 +1961,8 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: TARGET_ADDR_BIT # %s\n", XSTRING (TARGET_ADDR_BIT)); fprintf_unfiltered (file, - "gdbarch_dump: TARGET_ADDR_BIT = %ld\n", - (long) TARGET_ADDR_BIT); + "gdbarch_dump: TARGET_ADDR_BIT = %d\n", + TARGET_ADDR_BIT); #endif #ifdef TARGET_ARCHITECTURE fprintf_unfiltered (file, @@ -1861,8 +1978,8 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: TARGET_BFD_VMA_BIT # %s\n", XSTRING (TARGET_BFD_VMA_BIT)); fprintf_unfiltered (file, - "gdbarch_dump: TARGET_BFD_VMA_BIT = %ld\n", - (long) TARGET_BFD_VMA_BIT); + "gdbarch_dump: TARGET_BFD_VMA_BIT = %d\n", + TARGET_BFD_VMA_BIT); #endif #ifdef TARGET_BYTE_ORDER fprintf_unfiltered (file, @@ -1878,15 +1995,15 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) XSTRING (TARGET_CHAR_SIGNED)); fprintf_unfiltered (file, "gdbarch_dump: TARGET_CHAR_SIGNED = %d\n", - (long) TARGET_CHAR_SIGNED); + TARGET_CHAR_SIGNED); #endif #ifdef TARGET_DOUBLE_BIT fprintf_unfiltered (file, "gdbarch_dump: TARGET_DOUBLE_BIT # %s\n", XSTRING (TARGET_DOUBLE_BIT)); fprintf_unfiltered (file, - "gdbarch_dump: TARGET_DOUBLE_BIT = %ld\n", - (long) TARGET_DOUBLE_BIT); + "gdbarch_dump: TARGET_DOUBLE_BIT = %d\n", + TARGET_DOUBLE_BIT); #endif #ifdef TARGET_DOUBLE_FORMAT fprintf_unfiltered (file, @@ -1901,8 +2018,8 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: TARGET_FLOAT_BIT # %s\n", XSTRING (TARGET_FLOAT_BIT)); fprintf_unfiltered (file, - "gdbarch_dump: TARGET_FLOAT_BIT = %ld\n", - (long) TARGET_FLOAT_BIT); + "gdbarch_dump: TARGET_FLOAT_BIT = %d\n", + TARGET_FLOAT_BIT); #endif #ifdef TARGET_FLOAT_FORMAT fprintf_unfiltered (file, @@ -1917,24 +2034,24 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: TARGET_INT_BIT # %s\n", XSTRING (TARGET_INT_BIT)); fprintf_unfiltered (file, - "gdbarch_dump: TARGET_INT_BIT = %ld\n", - (long) TARGET_INT_BIT); + "gdbarch_dump: TARGET_INT_BIT = %d\n", + TARGET_INT_BIT); #endif #ifdef TARGET_LONG_BIT fprintf_unfiltered (file, "gdbarch_dump: TARGET_LONG_BIT # %s\n", XSTRING (TARGET_LONG_BIT)); fprintf_unfiltered (file, - "gdbarch_dump: TARGET_LONG_BIT = %ld\n", - (long) TARGET_LONG_BIT); + "gdbarch_dump: TARGET_LONG_BIT = %d\n", + TARGET_LONG_BIT); #endif #ifdef TARGET_LONG_DOUBLE_BIT fprintf_unfiltered (file, "gdbarch_dump: TARGET_LONG_DOUBLE_BIT # %s\n", XSTRING (TARGET_LONG_DOUBLE_BIT)); fprintf_unfiltered (file, - "gdbarch_dump: TARGET_LONG_DOUBLE_BIT = %ld\n", - (long) TARGET_LONG_DOUBLE_BIT); + "gdbarch_dump: TARGET_LONG_DOUBLE_BIT = %d\n", + TARGET_LONG_DOUBLE_BIT); #endif #ifdef TARGET_LONG_DOUBLE_FORMAT fprintf_unfiltered (file, @@ -1949,8 +2066,8 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: TARGET_LONG_LONG_BIT # %s\n", XSTRING (TARGET_LONG_LONG_BIT)); fprintf_unfiltered (file, - "gdbarch_dump: TARGET_LONG_LONG_BIT = %ld\n", - (long) TARGET_LONG_LONG_BIT); + "gdbarch_dump: TARGET_LONG_LONG_BIT = %d\n", + TARGET_LONG_LONG_BIT); #endif #ifdef TARGET_PRINT_INSN fprintf_unfiltered (file, @@ -1968,8 +2085,8 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: TARGET_PTR_BIT # %s\n", XSTRING (TARGET_PTR_BIT)); fprintf_unfiltered (file, - "gdbarch_dump: TARGET_PTR_BIT = %ld\n", - (long) TARGET_PTR_BIT); + "gdbarch_dump: TARGET_PTR_BIT = %d\n", + TARGET_PTR_BIT); #endif #ifdef TARGET_READ_FP fprintf_unfiltered (file, @@ -2009,8 +2126,8 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: TARGET_SHORT_BIT # %s\n", XSTRING (TARGET_SHORT_BIT)); fprintf_unfiltered (file, - "gdbarch_dump: TARGET_SHORT_BIT = %ld\n", - (long) TARGET_SHORT_BIT); + "gdbarch_dump: TARGET_SHORT_BIT = %d\n", + TARGET_SHORT_BIT); #endif #ifdef TARGET_VIRTUAL_FRAME_POINTER #if GDB_MULTI_ARCH @@ -2026,20 +2143,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) (long) current_gdbarch->virtual_frame_pointer /*TARGET_VIRTUAL_FRAME_POINTER ()*/); #endif -#ifdef TARGET_WRITE_FP -#if GDB_MULTI_ARCH - /* Macro might contain `[{}]' when not multi-arch */ - fprintf_unfiltered (file, - "gdbarch_dump: %s # %s\n", - "TARGET_WRITE_FP(val)", - XSTRING (TARGET_WRITE_FP (val))); -#endif - if (GDB_MULTI_ARCH) - fprintf_unfiltered (file, - "gdbarch_dump: TARGET_WRITE_FP = 0x%08lx\n", - (long) current_gdbarch->write_fp - /*TARGET_WRITE_FP ()*/); -#endif #ifdef TARGET_WRITE_PC #if GDB_MULTI_ARCH /* Macro might contain `[{}]' when not multi-arch */ @@ -2073,8 +2176,8 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: USE_GENERIC_DUMMY_FRAMES # %s\n", XSTRING (USE_GENERIC_DUMMY_FRAMES)); fprintf_unfiltered (file, - "gdbarch_dump: USE_GENERIC_DUMMY_FRAMES = %ld\n", - (long) USE_GENERIC_DUMMY_FRAMES); + "gdbarch_dump: USE_GENERIC_DUMMY_FRAMES = %d\n", + USE_GENERIC_DUMMY_FRAMES); #endif #ifdef USE_STRUCT_CONVENTION fprintf_unfiltered (file, @@ -2086,6 +2189,20 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: USE_STRUCT_CONVENTION = 0x%08lx\n", (long) current_gdbarch->use_struct_convention /*USE_STRUCT_CONVENTION ()*/); +#endif +#ifdef VALUE_TO_REGISTER +#if GDB_MULTI_ARCH + /* Macro might contain `[{}]' when not multi-arch */ + fprintf_unfiltered (file, + "gdbarch_dump: %s # %s\n", + "VALUE_TO_REGISTER(type, regnum, from, to)", + XSTRING (VALUE_TO_REGISTER (type, regnum, from, to))); +#endif + if (GDB_MULTI_ARCH) + fprintf_unfiltered (file, + "gdbarch_dump: VALUE_TO_REGISTER = 0x%08lx\n", + (long) current_gdbarch->value_to_register + /*VALUE_TO_REGISTER ()*/); #endif if (current_gdbarch->dump_tdep != NULL) current_gdbarch->dump_tdep (current_gdbarch, file); @@ -2103,6 +2220,7 @@ gdbarch_tdep (struct gdbarch *gdbarch) const struct bfd_arch_info * gdbarch_bfd_arch_info (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_bfd_arch_info called\n"); return gdbarch->bfd_arch_info; @@ -2111,6 +2229,7 @@ gdbarch_bfd_arch_info (struct gdbarch *gdbarch) int gdbarch_byte_order (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_byte_order called\n"); return gdbarch->byte_order; @@ -2119,6 +2238,7 @@ gdbarch_byte_order (struct gdbarch *gdbarch) int gdbarch_short_bit (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); /* Skip verify of short_bit, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_short_bit called\n"); @@ -2135,6 +2255,7 @@ set_gdbarch_short_bit (struct gdbarch *gdbarch, int gdbarch_int_bit (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); /* Skip verify of int_bit, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_int_bit called\n"); @@ -2151,6 +2272,7 @@ set_gdbarch_int_bit (struct gdbarch *gdbarch, int gdbarch_long_bit (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); /* Skip verify of long_bit, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_long_bit called\n"); @@ -2167,6 +2289,7 @@ set_gdbarch_long_bit (struct gdbarch *gdbarch, int gdbarch_long_long_bit (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); /* Skip verify of long_long_bit, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_long_long_bit called\n"); @@ -2183,6 +2306,7 @@ set_gdbarch_long_long_bit (struct gdbarch *gdbarch, int gdbarch_float_bit (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); /* Skip verify of float_bit, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_float_bit called\n"); @@ -2199,6 +2323,7 @@ set_gdbarch_float_bit (struct gdbarch *gdbarch, int gdbarch_double_bit (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); /* Skip verify of double_bit, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_double_bit called\n"); @@ -2215,6 +2340,7 @@ set_gdbarch_double_bit (struct gdbarch *gdbarch, int gdbarch_long_double_bit (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); /* Skip verify of long_double_bit, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_long_double_bit called\n"); @@ -2231,6 +2357,7 @@ set_gdbarch_long_double_bit (struct gdbarch *gdbarch, int gdbarch_ptr_bit (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); /* Skip verify of ptr_bit, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_ptr_bit called\n"); @@ -2247,6 +2374,7 @@ set_gdbarch_ptr_bit (struct gdbarch *gdbarch, int gdbarch_addr_bit (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->addr_bit == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_addr_bit invalid"); @@ -2265,6 +2393,7 @@ set_gdbarch_addr_bit (struct gdbarch *gdbarch, int gdbarch_bfd_vma_bit (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); /* Skip verify of bfd_vma_bit, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_bfd_vma_bit called\n"); @@ -2281,6 +2410,7 @@ set_gdbarch_bfd_vma_bit (struct gdbarch *gdbarch, int gdbarch_char_signed (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->char_signed == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_char_signed invalid"); @@ -2296,25 +2426,10 @@ set_gdbarch_char_signed (struct gdbarch *gdbarch, gdbarch->char_signed = char_signed; } -int -gdbarch_ieee_float (struct gdbarch *gdbarch) -{ - /* Skip verify of ieee_float, invalid_p == 0 */ - if (gdbarch_debug >= 2) - fprintf_unfiltered (gdb_stdlog, "gdbarch_ieee_float called\n"); - return gdbarch->ieee_float; -} - -void -set_gdbarch_ieee_float (struct gdbarch *gdbarch, - int ieee_float) -{ - gdbarch->ieee_float = ieee_float; -} - CORE_ADDR gdbarch_read_pc (struct gdbarch *gdbarch, ptid_t ptid) { + gdb_assert (gdbarch != NULL); if (gdbarch->read_pc == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_read_pc invalid"); @@ -2333,6 +2448,7 @@ set_gdbarch_read_pc (struct gdbarch *gdbarch, void gdbarch_write_pc (struct gdbarch *gdbarch, CORE_ADDR val, ptid_t ptid) { + gdb_assert (gdbarch != NULL); if (gdbarch->write_pc == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_write_pc invalid"); @@ -2351,6 +2467,7 @@ set_gdbarch_write_pc (struct gdbarch *gdbarch, CORE_ADDR gdbarch_read_fp (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->read_fp == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_read_fp invalid"); @@ -2366,27 +2483,10 @@ set_gdbarch_read_fp (struct gdbarch *gdbarch, gdbarch->read_fp = read_fp; } -void -gdbarch_write_fp (struct gdbarch *gdbarch, CORE_ADDR val) -{ - if (gdbarch->write_fp == 0) - internal_error (__FILE__, __LINE__, - "gdbarch: gdbarch_write_fp invalid"); - if (gdbarch_debug >= 2) - fprintf_unfiltered (gdb_stdlog, "gdbarch_write_fp called\n"); - gdbarch->write_fp (val); -} - -void -set_gdbarch_write_fp (struct gdbarch *gdbarch, - gdbarch_write_fp_ftype write_fp) -{ - gdbarch->write_fp = write_fp; -} - CORE_ADDR gdbarch_read_sp (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->read_sp == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_read_sp invalid"); @@ -2405,6 +2505,7 @@ set_gdbarch_read_sp (struct gdbarch *gdbarch, void gdbarch_write_sp (struct gdbarch *gdbarch, CORE_ADDR val) { + gdb_assert (gdbarch != NULL); if (gdbarch->write_sp == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_write_sp invalid"); @@ -2423,6 +2524,7 @@ set_gdbarch_write_sp (struct gdbarch *gdbarch, void gdbarch_virtual_frame_pointer (struct gdbarch *gdbarch, CORE_ADDR pc, int *frame_regnum, LONGEST *frame_offset) { + gdb_assert (gdbarch != NULL); if (gdbarch->virtual_frame_pointer == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_virtual_frame_pointer invalid"); @@ -2439,56 +2541,61 @@ set_gdbarch_virtual_frame_pointer (struct gdbarch *gdbarch, } int -gdbarch_register_read_p (struct gdbarch *gdbarch) +gdbarch_pseudo_register_read_p (struct gdbarch *gdbarch) { - return gdbarch->register_read != 0; + gdb_assert (gdbarch != NULL); + return gdbarch->pseudo_register_read != 0; } void -gdbarch_register_read (struct gdbarch *gdbarch, int regnum, char *buf) +gdbarch_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, void *buf) { - if (gdbarch->register_read == 0) + gdb_assert (gdbarch != NULL); + if (gdbarch->pseudo_register_read == 0) internal_error (__FILE__, __LINE__, - "gdbarch: gdbarch_register_read invalid"); + "gdbarch: gdbarch_pseudo_register_read invalid"); if (gdbarch_debug >= 2) - fprintf_unfiltered (gdb_stdlog, "gdbarch_register_read called\n"); - gdbarch->register_read (gdbarch, regnum, buf); + fprintf_unfiltered (gdb_stdlog, "gdbarch_pseudo_register_read called\n"); + gdbarch->pseudo_register_read (gdbarch, regcache, cookednum, buf); } void -set_gdbarch_register_read (struct gdbarch *gdbarch, - gdbarch_register_read_ftype register_read) +set_gdbarch_pseudo_register_read (struct gdbarch *gdbarch, + gdbarch_pseudo_register_read_ftype pseudo_register_read) { - gdbarch->register_read = register_read; + gdbarch->pseudo_register_read = pseudo_register_read; } int -gdbarch_register_write_p (struct gdbarch *gdbarch) +gdbarch_pseudo_register_write_p (struct gdbarch *gdbarch) { - return gdbarch->register_write != 0; + gdb_assert (gdbarch != NULL); + return gdbarch->pseudo_register_write != 0; } void -gdbarch_register_write (struct gdbarch *gdbarch, int regnum, char *buf) +gdbarch_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, const void *buf) { - if (gdbarch->register_write == 0) + gdb_assert (gdbarch != NULL); + if (gdbarch->pseudo_register_write == 0) internal_error (__FILE__, __LINE__, - "gdbarch: gdbarch_register_write invalid"); + "gdbarch: gdbarch_pseudo_register_write invalid"); if (gdbarch_debug >= 2) - fprintf_unfiltered (gdb_stdlog, "gdbarch_register_write called\n"); - gdbarch->register_write (gdbarch, regnum, buf); + fprintf_unfiltered (gdb_stdlog, "gdbarch_pseudo_register_write called\n"); + gdbarch->pseudo_register_write (gdbarch, regcache, cookednum, buf); } void -set_gdbarch_register_write (struct gdbarch *gdbarch, - gdbarch_register_write_ftype register_write) +set_gdbarch_pseudo_register_write (struct gdbarch *gdbarch, + gdbarch_pseudo_register_write_ftype pseudo_register_write) { - gdbarch->register_write = register_write; + gdbarch->pseudo_register_write = pseudo_register_write; } int gdbarch_num_regs (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->num_regs == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_num_regs invalid"); @@ -2507,6 +2614,7 @@ set_gdbarch_num_regs (struct gdbarch *gdbarch, int gdbarch_num_pseudo_regs (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); /* Skip verify of num_pseudo_regs, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_num_pseudo_regs called\n"); @@ -2523,9 +2631,8 @@ set_gdbarch_num_pseudo_regs (struct gdbarch *gdbarch, int gdbarch_sp_regnum (struct gdbarch *gdbarch) { - if (gdbarch->sp_regnum == -1) - internal_error (__FILE__, __LINE__, - "gdbarch: gdbarch_sp_regnum invalid"); + gdb_assert (gdbarch != NULL); + /* Skip verify of sp_regnum, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_sp_regnum called\n"); return gdbarch->sp_regnum; @@ -2541,9 +2648,8 @@ set_gdbarch_sp_regnum (struct gdbarch *gdbarch, int gdbarch_fp_regnum (struct gdbarch *gdbarch) { - if (gdbarch->fp_regnum == -1) - internal_error (__FILE__, __LINE__, - "gdbarch: gdbarch_fp_regnum invalid"); + gdb_assert (gdbarch != NULL); + /* Skip verify of fp_regnum, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_fp_regnum called\n"); return gdbarch->fp_regnum; @@ -2559,9 +2665,8 @@ set_gdbarch_fp_regnum (struct gdbarch *gdbarch, int gdbarch_pc_regnum (struct gdbarch *gdbarch) { - if (gdbarch->pc_regnum == -1) - internal_error (__FILE__, __LINE__, - "gdbarch: gdbarch_pc_regnum invalid"); + gdb_assert (gdbarch != NULL); + /* Skip verify of pc_regnum, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_pc_regnum called\n"); return gdbarch->pc_regnum; @@ -2574,9 +2679,27 @@ set_gdbarch_pc_regnum (struct gdbarch *gdbarch, gdbarch->pc_regnum = pc_regnum; } +int +gdbarch_ps_regnum (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + /* Skip verify of ps_regnum, invalid_p == 0 */ + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_ps_regnum called\n"); + return gdbarch->ps_regnum; +} + +void +set_gdbarch_ps_regnum (struct gdbarch *gdbarch, + int ps_regnum) +{ + gdbarch->ps_regnum = ps_regnum; +} + int gdbarch_fp0_regnum (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); /* Skip verify of fp0_regnum, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_fp0_regnum called\n"); @@ -2593,6 +2716,7 @@ set_gdbarch_fp0_regnum (struct gdbarch *gdbarch, int gdbarch_npc_regnum (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); /* Skip verify of npc_regnum, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_npc_regnum called\n"); @@ -2606,25 +2730,10 @@ set_gdbarch_npc_regnum (struct gdbarch *gdbarch, gdbarch->npc_regnum = npc_regnum; } -int -gdbarch_nnpc_regnum (struct gdbarch *gdbarch) -{ - /* Skip verify of nnpc_regnum, invalid_p == 0 */ - if (gdbarch_debug >= 2) - fprintf_unfiltered (gdb_stdlog, "gdbarch_nnpc_regnum called\n"); - return gdbarch->nnpc_regnum; -} - -void -set_gdbarch_nnpc_regnum (struct gdbarch *gdbarch, - int nnpc_regnum) -{ - gdbarch->nnpc_regnum = nnpc_regnum; -} - int gdbarch_stab_reg_to_regnum (struct gdbarch *gdbarch, int stab_regnr) { + gdb_assert (gdbarch != NULL); if (gdbarch->stab_reg_to_regnum == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_stab_reg_to_regnum invalid"); @@ -2643,6 +2752,7 @@ set_gdbarch_stab_reg_to_regnum (struct gdbarch *gdbarch, int gdbarch_ecoff_reg_to_regnum (struct gdbarch *gdbarch, int ecoff_regnr) { + gdb_assert (gdbarch != NULL); if (gdbarch->ecoff_reg_to_regnum == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_ecoff_reg_to_regnum invalid"); @@ -2661,6 +2771,7 @@ set_gdbarch_ecoff_reg_to_regnum (struct gdbarch *gdbarch, int gdbarch_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int dwarf_regnr) { + gdb_assert (gdbarch != NULL); if (gdbarch->dwarf_reg_to_regnum == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_dwarf_reg_to_regnum invalid"); @@ -2679,6 +2790,7 @@ set_gdbarch_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int gdbarch_sdb_reg_to_regnum (struct gdbarch *gdbarch, int sdb_regnr) { + gdb_assert (gdbarch != NULL); if (gdbarch->sdb_reg_to_regnum == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_sdb_reg_to_regnum invalid"); @@ -2697,6 +2809,7 @@ set_gdbarch_sdb_reg_to_regnum (struct gdbarch *gdbarch, int gdbarch_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int dwarf2_regnr) { + gdb_assert (gdbarch != NULL); if (gdbarch->dwarf2_reg_to_regnum == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_dwarf2_reg_to_regnum invalid"); @@ -2712,9 +2825,10 @@ set_gdbarch_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, gdbarch->dwarf2_reg_to_regnum = dwarf2_reg_to_regnum; } -char * +const char * gdbarch_register_name (struct gdbarch *gdbarch, int regnr) { + gdb_assert (gdbarch != NULL); if (gdbarch->register_name == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_register_name invalid"); @@ -2733,6 +2847,7 @@ set_gdbarch_register_name (struct gdbarch *gdbarch, int gdbarch_register_size (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->register_size == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_register_size invalid"); @@ -2751,6 +2866,7 @@ set_gdbarch_register_size (struct gdbarch *gdbarch, int gdbarch_register_bytes (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->register_bytes == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_register_bytes invalid"); @@ -2769,6 +2885,7 @@ set_gdbarch_register_bytes (struct gdbarch *gdbarch, int gdbarch_register_byte (struct gdbarch *gdbarch, int reg_nr) { + gdb_assert (gdbarch != NULL); if (gdbarch->register_byte == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_register_byte invalid"); @@ -2787,6 +2904,7 @@ set_gdbarch_register_byte (struct gdbarch *gdbarch, int gdbarch_register_raw_size (struct gdbarch *gdbarch, int reg_nr) { + gdb_assert (gdbarch != NULL); if (gdbarch->register_raw_size == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_register_raw_size invalid"); @@ -2805,6 +2923,7 @@ set_gdbarch_register_raw_size (struct gdbarch *gdbarch, int gdbarch_max_register_raw_size (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->max_register_raw_size == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_max_register_raw_size invalid"); @@ -2823,6 +2942,7 @@ set_gdbarch_max_register_raw_size (struct gdbarch *gdbarch, int gdbarch_register_virtual_size (struct gdbarch *gdbarch, int reg_nr) { + gdb_assert (gdbarch != NULL); if (gdbarch->register_virtual_size == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_register_virtual_size invalid"); @@ -2841,6 +2961,7 @@ set_gdbarch_register_virtual_size (struct gdbarch *gdbarch, int gdbarch_max_register_virtual_size (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->max_register_virtual_size == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_max_register_virtual_size invalid"); @@ -2859,6 +2980,7 @@ set_gdbarch_max_register_virtual_size (struct gdbarch *gdbarch, struct type * gdbarch_register_virtual_type (struct gdbarch *gdbarch, int reg_nr) { + gdb_assert (gdbarch != NULL); if (gdbarch->register_virtual_type == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_register_virtual_type invalid"); @@ -2877,6 +2999,7 @@ set_gdbarch_register_virtual_type (struct gdbarch *gdbarch, void gdbarch_do_registers_info (struct gdbarch *gdbarch, int reg_nr, int fpregs) { + gdb_assert (gdbarch != NULL); if (gdbarch->do_registers_info == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_do_registers_info invalid"); @@ -2892,9 +3015,62 @@ set_gdbarch_do_registers_info (struct gdbarch *gdbarch, gdbarch->do_registers_info = do_registers_info; } +int +gdbarch_print_float_info_p (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + return gdbarch->print_float_info != 0; +} + +void +gdbarch_print_float_info (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, const char *args) +{ + gdb_assert (gdbarch != NULL); + if (gdbarch->print_float_info == 0) + internal_error (__FILE__, __LINE__, + "gdbarch: gdbarch_print_float_info invalid"); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_print_float_info called\n"); + gdbarch->print_float_info (gdbarch, file, frame, args); +} + +void +set_gdbarch_print_float_info (struct gdbarch *gdbarch, + gdbarch_print_float_info_ftype print_float_info) +{ + gdbarch->print_float_info = print_float_info; +} + +int +gdbarch_print_vector_info_p (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + return gdbarch->print_vector_info != 0; +} + +void +gdbarch_print_vector_info (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, const char *args) +{ + gdb_assert (gdbarch != NULL); + if (gdbarch->print_vector_info == 0) + internal_error (__FILE__, __LINE__, + "gdbarch: gdbarch_print_vector_info invalid"); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_print_vector_info called\n"); + gdbarch->print_vector_info (gdbarch, file, frame, args); +} + +void +set_gdbarch_print_vector_info (struct gdbarch *gdbarch, + gdbarch_print_vector_info_ftype print_vector_info) +{ + gdbarch->print_vector_info = print_vector_info; +} + int gdbarch_register_sim_regno (struct gdbarch *gdbarch, int reg_nr) { + gdb_assert (gdbarch != NULL); if (gdbarch->register_sim_regno == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_register_sim_regno invalid"); @@ -2913,12 +3089,14 @@ set_gdbarch_register_sim_regno (struct gdbarch *gdbarch, int gdbarch_register_bytes_ok_p (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); return gdbarch->register_bytes_ok != 0; } int gdbarch_register_bytes_ok (struct gdbarch *gdbarch, long nr_bytes) { + gdb_assert (gdbarch != NULL); if (gdbarch->register_bytes_ok == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_register_bytes_ok invalid"); @@ -2937,6 +3115,7 @@ set_gdbarch_register_bytes_ok (struct gdbarch *gdbarch, int gdbarch_cannot_fetch_register (struct gdbarch *gdbarch, int regnum) { + gdb_assert (gdbarch != NULL); if (gdbarch->cannot_fetch_register == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_cannot_fetch_register invalid"); @@ -2955,6 +3134,7 @@ set_gdbarch_cannot_fetch_register (struct gdbarch *gdbarch, int gdbarch_cannot_store_register (struct gdbarch *gdbarch, int regnum) { + gdb_assert (gdbarch != NULL); if (gdbarch->cannot_store_register == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_cannot_store_register invalid"); @@ -2970,9 +3150,36 @@ set_gdbarch_cannot_store_register (struct gdbarch *gdbarch, gdbarch->cannot_store_register = cannot_store_register; } +int +gdbarch_get_longjmp_target_p (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + return gdbarch->get_longjmp_target != 0; +} + +int +gdbarch_get_longjmp_target (struct gdbarch *gdbarch, CORE_ADDR *pc) +{ + gdb_assert (gdbarch != NULL); + if (gdbarch->get_longjmp_target == 0) + internal_error (__FILE__, __LINE__, + "gdbarch: gdbarch_get_longjmp_target invalid"); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_get_longjmp_target called\n"); + return gdbarch->get_longjmp_target (pc); +} + +void +set_gdbarch_get_longjmp_target (struct gdbarch *gdbarch, + gdbarch_get_longjmp_target_ftype get_longjmp_target) +{ + gdbarch->get_longjmp_target = get_longjmp_target; +} + int gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->use_generic_dummy_frames == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_use_generic_dummy_frames invalid"); @@ -2991,6 +3198,7 @@ set_gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch, int gdbarch_call_dummy_location (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->call_dummy_location == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_call_dummy_location invalid"); @@ -3009,6 +3217,7 @@ set_gdbarch_call_dummy_location (struct gdbarch *gdbarch, CORE_ADDR gdbarch_call_dummy_address (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->call_dummy_address == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_call_dummy_address invalid"); @@ -3027,6 +3236,7 @@ set_gdbarch_call_dummy_address (struct gdbarch *gdbarch, CORE_ADDR gdbarch_call_dummy_start_offset (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->call_dummy_start_offset == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_call_dummy_start_offset invalid"); @@ -3045,6 +3255,7 @@ set_gdbarch_call_dummy_start_offset (struct gdbarch *gdbarch, CORE_ADDR gdbarch_call_dummy_breakpoint_offset (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->call_dummy_breakpoint_offset_p && gdbarch->call_dummy_breakpoint_offset == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_call_dummy_breakpoint_offset invalid"); @@ -3063,6 +3274,7 @@ set_gdbarch_call_dummy_breakpoint_offset (struct gdbarch *gdbarch, int gdbarch_call_dummy_breakpoint_offset_p (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->call_dummy_breakpoint_offset_p == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_call_dummy_breakpoint_offset_p invalid"); @@ -3081,6 +3293,7 @@ set_gdbarch_call_dummy_breakpoint_offset_p (struct gdbarch *gdbarch, int gdbarch_call_dummy_length (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->call_dummy_length == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_call_dummy_length invalid"); @@ -3099,6 +3312,7 @@ set_gdbarch_call_dummy_length (struct gdbarch *gdbarch, int gdbarch_pc_in_call_dummy (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address) { + gdb_assert (gdbarch != NULL); if (gdbarch->pc_in_call_dummy == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_pc_in_call_dummy invalid"); @@ -3117,6 +3331,7 @@ set_gdbarch_pc_in_call_dummy (struct gdbarch *gdbarch, int gdbarch_call_dummy_p (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->call_dummy_p == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_call_dummy_p invalid"); @@ -3135,6 +3350,7 @@ set_gdbarch_call_dummy_p (struct gdbarch *gdbarch, LONGEST * gdbarch_call_dummy_words (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); /* Skip verify of call_dummy_words, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_words called\n"); @@ -3151,6 +3367,7 @@ set_gdbarch_call_dummy_words (struct gdbarch *gdbarch, int gdbarch_sizeof_call_dummy_words (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); /* Skip verify of sizeof_call_dummy_words, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_sizeof_call_dummy_words called\n"); @@ -3167,6 +3384,7 @@ set_gdbarch_sizeof_call_dummy_words (struct gdbarch *gdbarch, int gdbarch_call_dummy_stack_adjust_p (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->call_dummy_stack_adjust_p == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_call_dummy_stack_adjust_p invalid"); @@ -3185,6 +3403,7 @@ set_gdbarch_call_dummy_stack_adjust_p (struct gdbarch *gdbarch, int gdbarch_call_dummy_stack_adjust (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->call_dummy_stack_adjust_p && gdbarch->call_dummy_stack_adjust == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_call_dummy_stack_adjust invalid"); @@ -3203,6 +3422,7 @@ set_gdbarch_call_dummy_stack_adjust (struct gdbarch *gdbarch, void gdbarch_fix_call_dummy (struct gdbarch *gdbarch, char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs, struct value **args, struct type *type, int gcc_p) { + gdb_assert (gdbarch != NULL); if (gdbarch->fix_call_dummy == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_fix_call_dummy invalid"); @@ -3221,6 +3441,7 @@ set_gdbarch_fix_call_dummy (struct gdbarch *gdbarch, void gdbarch_init_frame_pc_first (struct gdbarch *gdbarch, int fromleaf, struct frame_info *prev) { + gdb_assert (gdbarch != NULL); if (gdbarch->init_frame_pc_first == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_init_frame_pc_first invalid"); @@ -3239,6 +3460,7 @@ set_gdbarch_init_frame_pc_first (struct gdbarch *gdbarch, void gdbarch_init_frame_pc (struct gdbarch *gdbarch, int fromleaf, struct frame_info *prev) { + gdb_assert (gdbarch != NULL); if (gdbarch->init_frame_pc == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_init_frame_pc invalid"); @@ -3257,6 +3479,7 @@ set_gdbarch_init_frame_pc (struct gdbarch *gdbarch, int gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_believe_pcc_promotion called\n"); return gdbarch->believe_pcc_promotion; @@ -3272,6 +3495,7 @@ set_gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch, int gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_believe_pcc_promotion_type called\n"); return gdbarch->believe_pcc_promotion_type; @@ -3287,6 +3511,7 @@ set_gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch, int gdbarch_coerce_float_to_double (struct gdbarch *gdbarch, struct type *formal, struct type *actual) { + gdb_assert (gdbarch != NULL); if (gdbarch->coerce_float_to_double == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_coerce_float_to_double invalid"); @@ -3305,6 +3530,7 @@ set_gdbarch_coerce_float_to_double (struct gdbarch *gdbarch, void gdbarch_get_saved_register (struct gdbarch *gdbarch, char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval) { + gdb_assert (gdbarch != NULL); if (gdbarch->get_saved_register == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_get_saved_register invalid"); @@ -3323,6 +3549,7 @@ set_gdbarch_get_saved_register (struct gdbarch *gdbarch, int gdbarch_register_convertible (struct gdbarch *gdbarch, int nr) { + gdb_assert (gdbarch != NULL); if (gdbarch->register_convertible == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_register_convertible invalid"); @@ -3341,6 +3568,7 @@ set_gdbarch_register_convertible (struct gdbarch *gdbarch, void gdbarch_register_convert_to_virtual (struct gdbarch *gdbarch, int regnum, struct type *type, char *from, char *to) { + gdb_assert (gdbarch != NULL); if (gdbarch->register_convert_to_virtual == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_register_convert_to_virtual invalid"); @@ -3359,6 +3587,7 @@ set_gdbarch_register_convert_to_virtual (struct gdbarch *gdbarch, void gdbarch_register_convert_to_raw (struct gdbarch *gdbarch, struct type *type, int regnum, char *from, char *to) { + gdb_assert (gdbarch != NULL); if (gdbarch->register_convert_to_raw == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_register_convert_to_raw invalid"); @@ -3375,56 +3604,66 @@ set_gdbarch_register_convert_to_raw (struct gdbarch *gdbarch, } int -gdbarch_fetch_pseudo_register_p (struct gdbarch *gdbarch) +gdbarch_convert_register_p (struct gdbarch *gdbarch, int regnum) { - return gdbarch->fetch_pseudo_register != 0; + gdb_assert (gdbarch != NULL); + if (gdbarch->convert_register_p == 0) + internal_error (__FILE__, __LINE__, + "gdbarch: gdbarch_convert_register_p invalid"); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_convert_register_p called\n"); + return gdbarch->convert_register_p (regnum); } void -gdbarch_fetch_pseudo_register (struct gdbarch *gdbarch, int regnum) +set_gdbarch_convert_register_p (struct gdbarch *gdbarch, + gdbarch_convert_register_p_ftype convert_register_p) { - if (gdbarch->fetch_pseudo_register == 0) - internal_error (__FILE__, __LINE__, - "gdbarch: gdbarch_fetch_pseudo_register invalid"); - if (gdbarch_debug >= 2) - fprintf_unfiltered (gdb_stdlog, "gdbarch_fetch_pseudo_register called\n"); - gdbarch->fetch_pseudo_register (regnum); + gdbarch->convert_register_p = convert_register_p; } void -set_gdbarch_fetch_pseudo_register (struct gdbarch *gdbarch, - gdbarch_fetch_pseudo_register_ftype fetch_pseudo_register) +gdbarch_register_to_value (struct gdbarch *gdbarch, int regnum, struct type *type, char *from, char *to) { - gdbarch->fetch_pseudo_register = fetch_pseudo_register; + gdb_assert (gdbarch != NULL); + if (gdbarch->register_to_value == 0) + internal_error (__FILE__, __LINE__, + "gdbarch: gdbarch_register_to_value invalid"); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_register_to_value called\n"); + gdbarch->register_to_value (regnum, type, from, to); } -int -gdbarch_store_pseudo_register_p (struct gdbarch *gdbarch) +void +set_gdbarch_register_to_value (struct gdbarch *gdbarch, + gdbarch_register_to_value_ftype register_to_value) { - return gdbarch->store_pseudo_register != 0; + gdbarch->register_to_value = register_to_value; } void -gdbarch_store_pseudo_register (struct gdbarch *gdbarch, int regnum) +gdbarch_value_to_register (struct gdbarch *gdbarch, struct type *type, int regnum, char *from, char *to) { - if (gdbarch->store_pseudo_register == 0) + gdb_assert (gdbarch != NULL); + if (gdbarch->value_to_register == 0) internal_error (__FILE__, __LINE__, - "gdbarch: gdbarch_store_pseudo_register invalid"); + "gdbarch: gdbarch_value_to_register invalid"); if (gdbarch_debug >= 2) - fprintf_unfiltered (gdb_stdlog, "gdbarch_store_pseudo_register called\n"); - gdbarch->store_pseudo_register (regnum); + fprintf_unfiltered (gdb_stdlog, "gdbarch_value_to_register called\n"); + gdbarch->value_to_register (type, regnum, from, to); } void -set_gdbarch_store_pseudo_register (struct gdbarch *gdbarch, - gdbarch_store_pseudo_register_ftype store_pseudo_register) +set_gdbarch_value_to_register (struct gdbarch *gdbarch, + gdbarch_value_to_register_ftype value_to_register) { - gdbarch->store_pseudo_register = store_pseudo_register; + gdbarch->value_to_register = value_to_register; } CORE_ADDR gdbarch_pointer_to_address (struct gdbarch *gdbarch, struct type *type, void *buf) { + gdb_assert (gdbarch != NULL); if (gdbarch->pointer_to_address == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_pointer_to_address invalid"); @@ -3443,6 +3682,7 @@ set_gdbarch_pointer_to_address (struct gdbarch *gdbarch, void gdbarch_address_to_pointer (struct gdbarch *gdbarch, struct type *type, void *buf, CORE_ADDR addr) { + gdb_assert (gdbarch != NULL); if (gdbarch->address_to_pointer == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_address_to_pointer invalid"); @@ -3461,12 +3701,14 @@ set_gdbarch_address_to_pointer (struct gdbarch *gdbarch, int gdbarch_integer_to_address_p (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); return gdbarch->integer_to_address != 0; } CORE_ADDR gdbarch_integer_to_address (struct gdbarch *gdbarch, struct type *type, void *buf) { + gdb_assert (gdbarch != NULL); if (gdbarch->integer_to_address == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_integer_to_address invalid"); @@ -3485,6 +3727,7 @@ set_gdbarch_integer_to_address (struct gdbarch *gdbarch, int gdbarch_return_value_on_stack (struct gdbarch *gdbarch, struct type *type) { + gdb_assert (gdbarch != NULL); if (gdbarch->return_value_on_stack == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_return_value_on_stack invalid"); @@ -3501,14 +3744,15 @@ set_gdbarch_return_value_on_stack (struct gdbarch *gdbarch, } void -gdbarch_extract_return_value (struct gdbarch *gdbarch, struct type *type, char *regbuf, char *valbuf) +gdbarch_extract_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, char *valbuf) { + gdb_assert (gdbarch != NULL); if (gdbarch->extract_return_value == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_extract_return_value invalid"); if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_extract_return_value called\n"); - gdbarch->extract_return_value (type, regbuf, valbuf); + gdbarch->extract_return_value (type, regcache, valbuf); } void @@ -3518,9 +3762,29 @@ set_gdbarch_extract_return_value (struct gdbarch *gdbarch, gdbarch->extract_return_value = extract_return_value; } +void +gdbarch_deprecated_extract_return_value (struct gdbarch *gdbarch, struct type *type, char *regbuf, char *valbuf) +{ + gdb_assert (gdbarch != NULL); + if (gdbarch->deprecated_extract_return_value == 0) + internal_error (__FILE__, __LINE__, + "gdbarch: gdbarch_deprecated_extract_return_value invalid"); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_extract_return_value called\n"); + gdbarch->deprecated_extract_return_value (type, regbuf, valbuf); +} + +void +set_gdbarch_deprecated_extract_return_value (struct gdbarch *gdbarch, + gdbarch_deprecated_extract_return_value_ftype deprecated_extract_return_value) +{ + gdbarch->deprecated_extract_return_value = deprecated_extract_return_value; +} + CORE_ADDR gdbarch_push_arguments (struct gdbarch *gdbarch, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr) { + gdb_assert (gdbarch != NULL); if (gdbarch->push_arguments == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_push_arguments invalid"); @@ -3539,6 +3803,7 @@ set_gdbarch_push_arguments (struct gdbarch *gdbarch, void gdbarch_push_dummy_frame (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->push_dummy_frame == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_push_dummy_frame invalid"); @@ -3557,12 +3822,14 @@ set_gdbarch_push_dummy_frame (struct gdbarch *gdbarch, int gdbarch_push_return_address_p (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); return gdbarch->push_return_address != 0; } CORE_ADDR gdbarch_push_return_address (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR sp) { + gdb_assert (gdbarch != NULL); if (gdbarch->push_return_address == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_push_return_address invalid"); @@ -3581,6 +3848,7 @@ set_gdbarch_push_return_address (struct gdbarch *gdbarch, void gdbarch_pop_frame (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->pop_frame == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_pop_frame invalid"); @@ -3599,6 +3867,7 @@ set_gdbarch_pop_frame (struct gdbarch *gdbarch, void gdbarch_store_struct_return (struct gdbarch *gdbarch, CORE_ADDR addr, CORE_ADDR sp) { + gdb_assert (gdbarch != NULL); if (gdbarch->store_struct_return == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_store_struct_return invalid"); @@ -3617,6 +3886,7 @@ set_gdbarch_store_struct_return (struct gdbarch *gdbarch, void gdbarch_store_return_value (struct gdbarch *gdbarch, struct type *type, char *valbuf) { + gdb_assert (gdbarch != NULL); if (gdbarch->store_return_value == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_store_return_value invalid"); @@ -3635,18 +3905,20 @@ set_gdbarch_store_return_value (struct gdbarch *gdbarch, int gdbarch_extract_struct_value_address_p (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); return gdbarch->extract_struct_value_address != 0; } CORE_ADDR -gdbarch_extract_struct_value_address (struct gdbarch *gdbarch, char *regbuf) +gdbarch_extract_struct_value_address (struct gdbarch *gdbarch, struct regcache *regcache) { + gdb_assert (gdbarch != NULL); if (gdbarch->extract_struct_value_address == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_extract_struct_value_address invalid"); if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_extract_struct_value_address called\n"); - return gdbarch->extract_struct_value_address (regbuf); + return gdbarch->extract_struct_value_address (regcache); } void @@ -3656,9 +3928,36 @@ set_gdbarch_extract_struct_value_address (struct gdbarch *gdbarch, gdbarch->extract_struct_value_address = extract_struct_value_address; } +int +gdbarch_deprecated_extract_struct_value_address_p (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + return gdbarch->deprecated_extract_struct_value_address != 0; +} + +CORE_ADDR +gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch, char *regbuf) +{ + gdb_assert (gdbarch != NULL); + if (gdbarch->deprecated_extract_struct_value_address == 0) + internal_error (__FILE__, __LINE__, + "gdbarch: gdbarch_deprecated_extract_struct_value_address invalid"); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_extract_struct_value_address called\n"); + return gdbarch->deprecated_extract_struct_value_address (regbuf); +} + +void +set_gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch, + gdbarch_deprecated_extract_struct_value_address_ftype deprecated_extract_struct_value_address) +{ + gdbarch->deprecated_extract_struct_value_address = deprecated_extract_struct_value_address; +} + int gdbarch_use_struct_convention (struct gdbarch *gdbarch, int gcc_p, struct type *value_type) { + gdb_assert (gdbarch != NULL); if (gdbarch->use_struct_convention == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_use_struct_convention invalid"); @@ -3677,6 +3976,7 @@ set_gdbarch_use_struct_convention (struct gdbarch *gdbarch, void gdbarch_frame_init_saved_regs (struct gdbarch *gdbarch, struct frame_info *frame) { + gdb_assert (gdbarch != NULL); if (gdbarch->frame_init_saved_regs == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_frame_init_saved_regs invalid"); @@ -3695,12 +3995,14 @@ set_gdbarch_frame_init_saved_regs (struct gdbarch *gdbarch, int gdbarch_init_extra_frame_info_p (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); return gdbarch->init_extra_frame_info != 0; } void gdbarch_init_extra_frame_info (struct gdbarch *gdbarch, int fromleaf, struct frame_info *frame) { + gdb_assert (gdbarch != NULL); if (gdbarch->init_extra_frame_info == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_init_extra_frame_info invalid"); @@ -3719,6 +4021,7 @@ set_gdbarch_init_extra_frame_info (struct gdbarch *gdbarch, CORE_ADDR gdbarch_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR ip) { + gdb_assert (gdbarch != NULL); if (gdbarch->skip_prologue == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_skip_prologue invalid"); @@ -3737,6 +4040,7 @@ set_gdbarch_skip_prologue (struct gdbarch *gdbarch, int gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, CORE_ADDR ip) { + gdb_assert (gdbarch != NULL); if (gdbarch->prologue_frameless_p == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_prologue_frameless_p invalid"); @@ -3755,6 +4059,7 @@ set_gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, int gdbarch_inner_than (struct gdbarch *gdbarch, CORE_ADDR lhs, CORE_ADDR rhs) { + gdb_assert (gdbarch != NULL); if (gdbarch->inner_than == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_inner_than invalid"); @@ -3770,9 +4075,10 @@ set_gdbarch_inner_than (struct gdbarch *gdbarch, gdbarch->inner_than = inner_than; } -unsigned char * +const unsigned char * gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr) { + gdb_assert (gdbarch != NULL); if (gdbarch->breakpoint_from_pc == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_breakpoint_from_pc invalid"); @@ -3791,6 +4097,7 @@ set_gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, int gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache) { + gdb_assert (gdbarch != NULL); if (gdbarch->memory_insert_breakpoint == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_memory_insert_breakpoint invalid"); @@ -3809,6 +4116,7 @@ set_gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, int gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache) { + gdb_assert (gdbarch != NULL); if (gdbarch->memory_remove_breakpoint == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_memory_remove_breakpoint invalid"); @@ -3827,6 +4135,7 @@ set_gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, CORE_ADDR gdbarch_decr_pc_after_break (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->decr_pc_after_break == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_decr_pc_after_break invalid"); @@ -3845,6 +4154,7 @@ set_gdbarch_decr_pc_after_break (struct gdbarch *gdbarch, int gdbarch_prepare_to_proceed (struct gdbarch *gdbarch, int select_it) { + gdb_assert (gdbarch != NULL); if (gdbarch->prepare_to_proceed == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_prepare_to_proceed invalid"); @@ -3863,6 +4173,7 @@ set_gdbarch_prepare_to_proceed (struct gdbarch *gdbarch, CORE_ADDR gdbarch_function_start_offset (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->function_start_offset == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_function_start_offset invalid"); @@ -3881,6 +4192,7 @@ set_gdbarch_function_start_offset (struct gdbarch *gdbarch, void gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch, CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len) { + gdb_assert (gdbarch != NULL); if (gdbarch->remote_translate_xfer_address == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_remote_translate_xfer_address invalid"); @@ -3899,6 +4211,7 @@ set_gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch, CORE_ADDR gdbarch_frame_args_skip (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch->frame_args_skip == -1) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_frame_args_skip invalid"); @@ -3917,6 +4230,7 @@ set_gdbarch_frame_args_skip (struct gdbarch *gdbarch, int gdbarch_frameless_function_invocation (struct gdbarch *gdbarch, struct frame_info *fi) { + gdb_assert (gdbarch != NULL); if (gdbarch->frameless_function_invocation == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_frameless_function_invocation invalid"); @@ -3935,6 +4249,7 @@ set_gdbarch_frameless_function_invocation (struct gdbarch *gdbarch, CORE_ADDR gdbarch_frame_chain (struct gdbarch *gdbarch, struct frame_info *frame) { + gdb_assert (gdbarch != NULL); if (gdbarch->frame_chain == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_frame_chain invalid"); @@ -3953,6 +4268,7 @@ set_gdbarch_frame_chain (struct gdbarch *gdbarch, int gdbarch_frame_chain_valid (struct gdbarch *gdbarch, CORE_ADDR chain, struct frame_info *thisframe) { + gdb_assert (gdbarch != NULL); if (gdbarch->frame_chain_valid == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_frame_chain_valid invalid"); @@ -3971,6 +4287,7 @@ set_gdbarch_frame_chain_valid (struct gdbarch *gdbarch, CORE_ADDR gdbarch_frame_saved_pc (struct gdbarch *gdbarch, struct frame_info *fi) { + gdb_assert (gdbarch != NULL); if (gdbarch->frame_saved_pc == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_frame_saved_pc invalid"); @@ -3989,6 +4306,7 @@ set_gdbarch_frame_saved_pc (struct gdbarch *gdbarch, CORE_ADDR gdbarch_frame_args_address (struct gdbarch *gdbarch, struct frame_info *fi) { + gdb_assert (gdbarch != NULL); if (gdbarch->frame_args_address == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_frame_args_address invalid"); @@ -4007,6 +4325,7 @@ set_gdbarch_frame_args_address (struct gdbarch *gdbarch, CORE_ADDR gdbarch_frame_locals_address (struct gdbarch *gdbarch, struct frame_info *fi) { + gdb_assert (gdbarch != NULL); if (gdbarch->frame_locals_address == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_frame_locals_address invalid"); @@ -4025,6 +4344,7 @@ set_gdbarch_frame_locals_address (struct gdbarch *gdbarch, CORE_ADDR gdbarch_saved_pc_after_call (struct gdbarch *gdbarch, struct frame_info *frame) { + gdb_assert (gdbarch != NULL); if (gdbarch->saved_pc_after_call == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_saved_pc_after_call invalid"); @@ -4043,6 +4363,7 @@ set_gdbarch_saved_pc_after_call (struct gdbarch *gdbarch, int gdbarch_frame_num_args (struct gdbarch *gdbarch, struct frame_info *frame) { + gdb_assert (gdbarch != NULL); if (gdbarch->frame_num_args == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_frame_num_args invalid"); @@ -4061,12 +4382,14 @@ set_gdbarch_frame_num_args (struct gdbarch *gdbarch, int gdbarch_stack_align_p (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); return gdbarch->stack_align != 0; } CORE_ADDR gdbarch_stack_align (struct gdbarch *gdbarch, CORE_ADDR sp) { + gdb_assert (gdbarch != NULL); if (gdbarch->stack_align == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_stack_align invalid"); @@ -4085,6 +4408,7 @@ set_gdbarch_stack_align (struct gdbarch *gdbarch, int gdbarch_extra_stack_alignment_needed (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); /* Skip verify of extra_stack_alignment_needed, invalid_p == 0 */ if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_extra_stack_alignment_needed called\n"); @@ -4101,12 +4425,14 @@ set_gdbarch_extra_stack_alignment_needed (struct gdbarch *gdbarch, int gdbarch_reg_struct_has_addr_p (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); return gdbarch->reg_struct_has_addr != 0; } int gdbarch_reg_struct_has_addr (struct gdbarch *gdbarch, int gcc_p, struct type *type) { + gdb_assert (gdbarch != NULL); if (gdbarch->reg_struct_has_addr == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_reg_struct_has_addr invalid"); @@ -4125,12 +4451,14 @@ set_gdbarch_reg_struct_has_addr (struct gdbarch *gdbarch, int gdbarch_save_dummy_frame_tos_p (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); return gdbarch->save_dummy_frame_tos != 0; } void gdbarch_save_dummy_frame_tos (struct gdbarch *gdbarch, CORE_ADDR sp) { + gdb_assert (gdbarch != NULL); if (gdbarch->save_dummy_frame_tos == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_save_dummy_frame_tos invalid"); @@ -4149,6 +4477,7 @@ set_gdbarch_save_dummy_frame_tos (struct gdbarch *gdbarch, int gdbarch_parm_boundary (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_parm_boundary called\n"); return gdbarch->parm_boundary; @@ -4164,6 +4493,7 @@ set_gdbarch_parm_boundary (struct gdbarch *gdbarch, const struct floatformat * gdbarch_float_format (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_float_format called\n"); return gdbarch->float_format; @@ -4179,6 +4509,7 @@ set_gdbarch_float_format (struct gdbarch *gdbarch, const struct floatformat * gdbarch_double_format (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_double_format called\n"); return gdbarch->double_format; @@ -4194,6 +4525,7 @@ set_gdbarch_double_format (struct gdbarch *gdbarch, const struct floatformat * gdbarch_long_double_format (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_long_double_format called\n"); return gdbarch->long_double_format; @@ -4209,6 +4541,7 @@ set_gdbarch_long_double_format (struct gdbarch *gdbarch, CORE_ADDR gdbarch_convert_from_func_ptr_addr (struct gdbarch *gdbarch, CORE_ADDR addr) { + gdb_assert (gdbarch != NULL); if (gdbarch->convert_from_func_ptr_addr == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_convert_from_func_ptr_addr invalid"); @@ -4227,6 +4560,7 @@ set_gdbarch_convert_from_func_ptr_addr (struct gdbarch *gdbarch, CORE_ADDR gdbarch_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR addr) { + gdb_assert (gdbarch != NULL); if (gdbarch->addr_bits_remove == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_addr_bits_remove invalid"); @@ -4242,15 +4576,36 @@ set_gdbarch_addr_bits_remove (struct gdbarch *gdbarch, gdbarch->addr_bits_remove = addr_bits_remove; } +CORE_ADDR +gdbarch_smash_text_address (struct gdbarch *gdbarch, CORE_ADDR addr) +{ + gdb_assert (gdbarch != NULL); + if (gdbarch->smash_text_address == 0) + internal_error (__FILE__, __LINE__, + "gdbarch: gdbarch_smash_text_address invalid"); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_smash_text_address called\n"); + return gdbarch->smash_text_address (addr); +} + +void +set_gdbarch_smash_text_address (struct gdbarch *gdbarch, + gdbarch_smash_text_address_ftype smash_text_address) +{ + gdbarch->smash_text_address = smash_text_address; +} + int gdbarch_software_single_step_p (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); return gdbarch->software_single_step != 0; } void gdbarch_software_single_step (struct gdbarch *gdbarch, enum target_signal sig, int insert_breakpoints_p) { + gdb_assert (gdbarch != NULL); if (gdbarch->software_single_step == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_software_single_step invalid"); @@ -4269,6 +4624,7 @@ set_gdbarch_software_single_step (struct gdbarch *gdbarch, int gdbarch_print_insn (struct gdbarch *gdbarch, bfd_vma vma, disassemble_info *info) { + gdb_assert (gdbarch != NULL); if (gdbarch->print_insn == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_print_insn invalid"); @@ -4287,6 +4643,7 @@ set_gdbarch_print_insn (struct gdbarch *gdbarch, CORE_ADDR gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, CORE_ADDR pc) { + gdb_assert (gdbarch != NULL); if (gdbarch->skip_trampoline_code == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_skip_trampoline_code invalid"); @@ -4305,6 +4662,7 @@ set_gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, int gdbarch_in_solib_call_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, char *name) { + gdb_assert (gdbarch != NULL); if (gdbarch->in_solib_call_trampoline == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_in_solib_call_trampoline invalid"); @@ -4320,9 +4678,48 @@ set_gdbarch_in_solib_call_trampoline (struct gdbarch *gdbarch, gdbarch->in_solib_call_trampoline = in_solib_call_trampoline; } +int +gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, char *name) +{ + gdb_assert (gdbarch != NULL); + if (gdbarch->in_solib_return_trampoline == 0) + internal_error (__FILE__, __LINE__, + "gdbarch: gdbarch_in_solib_return_trampoline invalid"); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_in_solib_return_trampoline called\n"); + return gdbarch->in_solib_return_trampoline (pc, name); +} + +void +set_gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, + gdbarch_in_solib_return_trampoline_ftype in_solib_return_trampoline) +{ + gdbarch->in_solib_return_trampoline = in_solib_return_trampoline; +} + +int +gdbarch_pc_in_sigtramp (struct gdbarch *gdbarch, CORE_ADDR pc, char *name) +{ + gdb_assert (gdbarch != NULL); + if (gdbarch->pc_in_sigtramp == 0) + internal_error (__FILE__, __LINE__, + "gdbarch: gdbarch_pc_in_sigtramp invalid"); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_pc_in_sigtramp called\n"); + return gdbarch->pc_in_sigtramp (pc, name); +} + +void +set_gdbarch_pc_in_sigtramp (struct gdbarch *gdbarch, + gdbarch_pc_in_sigtramp_ftype pc_in_sigtramp) +{ + gdbarch->pc_in_sigtramp = pc_in_sigtramp; +} + int gdbarch_in_function_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR addr) { + gdb_assert (gdbarch != NULL); if (gdbarch->in_function_epilogue_p == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_in_function_epilogue_p invalid"); @@ -4341,6 +4738,7 @@ set_gdbarch_in_function_epilogue_p (struct gdbarch *gdbarch, char * gdbarch_construct_inferior_arguments (struct gdbarch *gdbarch, int argc, char **argv) { + gdb_assert (gdbarch != NULL); if (gdbarch->construct_inferior_arguments == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_construct_inferior_arguments invalid"); @@ -4359,12 +4757,14 @@ set_gdbarch_construct_inferior_arguments (struct gdbarch *gdbarch, int gdbarch_dwarf2_build_frame_info_p (struct gdbarch *gdbarch) { + gdb_assert (gdbarch != NULL); return gdbarch->dwarf2_build_frame_info != 0; } void gdbarch_dwarf2_build_frame_info (struct gdbarch *gdbarch, struct objfile *objfile) { + gdb_assert (gdbarch != NULL); if (gdbarch->dwarf2_build_frame_info == 0) internal_error (__FILE__, __LINE__, "gdbarch: gdbarch_dwarf2_build_frame_info invalid"); @@ -4380,6 +4780,44 @@ set_gdbarch_dwarf2_build_frame_info (struct gdbarch *gdbarch, gdbarch->dwarf2_build_frame_info = dwarf2_build_frame_info; } +void +gdbarch_elf_make_msymbol_special (struct gdbarch *gdbarch, asymbol *sym, struct minimal_symbol *msym) +{ + gdb_assert (gdbarch != NULL); + if (gdbarch->elf_make_msymbol_special == 0) + internal_error (__FILE__, __LINE__, + "gdbarch: gdbarch_elf_make_msymbol_special invalid"); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_elf_make_msymbol_special called\n"); + gdbarch->elf_make_msymbol_special (sym, msym); +} + +void +set_gdbarch_elf_make_msymbol_special (struct gdbarch *gdbarch, + gdbarch_elf_make_msymbol_special_ftype elf_make_msymbol_special) +{ + gdbarch->elf_make_msymbol_special = elf_make_msymbol_special; +} + +void +gdbarch_coff_make_msymbol_special (struct gdbarch *gdbarch, int val, struct minimal_symbol *msym) +{ + gdb_assert (gdbarch != NULL); + if (gdbarch->coff_make_msymbol_special == 0) + internal_error (__FILE__, __LINE__, + "gdbarch: gdbarch_coff_make_msymbol_special invalid"); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_coff_make_msymbol_special called\n"); + gdbarch->coff_make_msymbol_special (val, msym); +} + +void +set_gdbarch_coff_make_msymbol_special (struct gdbarch *gdbarch, + gdbarch_coff_make_msymbol_special_ftype coff_make_msymbol_special) +{ + gdbarch->coff_make_msymbol_special = coff_make_msymbol_special; +} + /* Keep a registry of per-architecture data-pointers required by GDB modules. */ @@ -4387,6 +4825,7 @@ set_gdbarch_dwarf2_build_frame_info (struct gdbarch *gdbarch, struct gdbarch_data { unsigned index; + int init_p; gdbarch_data_init_ftype *init; gdbarch_data_free_ftype *free; }; @@ -4413,6 +4852,7 @@ register_gdbarch_data (gdbarch_data_init_ftype *init, gdbarch_data_free_ftype *free) { struct gdbarch_data_registration **curr; + /* Append the new registraration. */ for (curr = &gdbarch_data_registry.registrations; (*curr) != NULL; curr = &(*curr)->next); @@ -4421,31 +4861,12 @@ register_gdbarch_data (gdbarch_data_init_ftype *init, (*curr)->data = XMALLOC (struct gdbarch_data); (*curr)->data->index = gdbarch_data_registry.nr++; (*curr)->data->init = init; + (*curr)->data->init_p = 1; (*curr)->data->free = free; return (*curr)->data; } -/* Walk through all the registered users initializing each in turn. */ - -static void -init_gdbarch_data (struct gdbarch *gdbarch) -{ - struct gdbarch_data_registration *rego; - for (rego = gdbarch_data_registry.registrations; - rego != NULL; - rego = rego->next) - { - struct gdbarch_data *data = rego->data; - gdb_assert (data->index < gdbarch->nr_data); - if (data->init != NULL) - { - void *pointer = data->init (gdbarch); - set_gdbarch_data (gdbarch, data, pointer); - } - } -} - /* Create/delete the gdbarch data vector. */ static void @@ -4478,7 +4899,7 @@ free_gdbarch_data (struct gdbarch *gdbarch) } -/* Initialize the current value of thee specified per-architecture +/* Initialize the current value of the specified per-architecture data-pointer. */ void @@ -4487,8 +4908,11 @@ set_gdbarch_data (struct gdbarch *gdbarch, void *pointer) { gdb_assert (data->index < gdbarch->nr_data); - if (data->free != NULL && gdbarch->data[data->index] != NULL) - data->free (gdbarch, gdbarch->data[data->index]); + if (gdbarch->data[data->index] != NULL) + { + gdb_assert (data->free != NULL); + data->free (gdbarch, gdbarch->data[data->index]); + } gdbarch->data[data->index] = pointer; } @@ -4496,10 +4920,24 @@ set_gdbarch_data (struct gdbarch *gdbarch, data-pointer. */ void * -gdbarch_data (struct gdbarch_data *data) +gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *data) { - gdb_assert (data->index < current_gdbarch->nr_data); - return current_gdbarch->data[data->index]; + gdb_assert (data->index < gdbarch->nr_data); + /* The data-pointer isn't initialized, call init() to get a value but + only if the architecture initializaiton has completed. Otherwise + punt - hope that the caller knows what they are doing. */ + if (gdbarch->data[data->index] == NULL + && gdbarch->initialized_p) + { + /* Be careful to detect an initialization cycle. */ + gdb_assert (data->init_p); + data->init_p = 0; + gdb_assert (data->init != NULL); + gdbarch->data[data->index] = data->init (gdbarch); + data->init_p = 1; + gdb_assert (gdbarch->data[data->index] != NULL); + } + return gdbarch->data[data->index]; } @@ -4548,6 +4986,17 @@ register_gdbarch_swap (void *data, (*rego)->sizeof_data = sizeof_data; } +static void +clear_gdbarch_swap (struct gdbarch *gdbarch) +{ + struct gdbarch_swap *curr; + for (curr = gdbarch->swap; + curr != NULL; + curr = curr->next) + { + memset (curr->source->data, 0, curr->source->sizeof_data); + } +} static void init_gdbarch_swap (struct gdbarch *gdbarch) @@ -4564,7 +5013,6 @@ init_gdbarch_swap (struct gdbarch *gdbarch) (*curr)->source = rego; (*curr)->swap = xmalloc (rego->sizeof_data); (*curr)->next = NULL; - memset (rego->data, 0, rego->sizeof_data); curr = &(*curr)->next; } if (rego->init != NULL) @@ -4730,7 +5178,7 @@ int gdbarch_update_p (struct gdbarch_info info) { struct gdbarch *new_gdbarch; - struct gdbarch_list **list; + struct gdbarch *old_gdbarch; struct gdbarch_registration *rego; /* Fill in missing parts of the INFO struct using a number of @@ -4749,17 +5197,17 @@ gdbarch_update_p (struct gdbarch_info info) info.bfd_arch_info = TARGET_ARCHITECTURE; /* ``(gdb) set byte-order ...'' */ - if (info.byte_order == 0 + if (info.byte_order == BFD_ENDIAN_UNKNOWN && !TARGET_BYTE_ORDER_AUTO) info.byte_order = TARGET_BYTE_ORDER; /* From the INFO struct. */ - if (info.byte_order == 0 + if (info.byte_order == BFD_ENDIAN_UNKNOWN && info.abfd != NULL) - info.byte_order = (bfd_big_endian (info.abfd) ? BIG_ENDIAN + info.byte_order = (bfd_big_endian (info.abfd) ? BFD_ENDIAN_BIG : bfd_little_endian (info.abfd) ? BFD_ENDIAN_LITTLE - : 0); + : BFD_ENDIAN_UNKNOWN); /* From the current target. */ - if (info.byte_order == 0) + if (info.byte_order == BFD_ENDIAN_UNKNOWN) info.byte_order = TARGET_BYTE_ORDER; /* Must have found some sort of architecture. */ @@ -4775,7 +5223,7 @@ gdbarch_update_p (struct gdbarch_info info) fprintf_unfiltered (gdb_stdlog, "gdbarch_update: info.byte_order %d (%s)\n", info.byte_order, - (info.byte_order == BIG_ENDIAN ? "big" + (info.byte_order == BFD_ENDIAN_BIG ? "big" : info.byte_order == BFD_ENDIAN_LITTLE ? "little" : "default")); fprintf_unfiltered (gdb_stdlog, @@ -4799,56 +5247,92 @@ gdbarch_update_p (struct gdbarch_info info) return 0; } + /* Swap the data belonging to the old target out setting the + installed data to zero. This stops the ->init() function trying + to refer to the previous architecture's global data structures. */ + swapout_gdbarch_swap (current_gdbarch); + clear_gdbarch_swap (current_gdbarch); + + /* Save the previously selected architecture, setting the global to + NULL. This stops ->init() trying to use the previous + architecture's configuration. The previous architecture may not + even be of the same architecture family. The most recent + architecture of the same family is found at the head of the + rego->arches list. */ + old_gdbarch = current_gdbarch; + current_gdbarch = NULL; + /* Ask the target for a replacement architecture. */ new_gdbarch = rego->init (info, rego->arches); - /* Did the target like it? No. Reject the change. */ + /* Did the target like it? No. Reject the change and revert to the + old architecture. */ if (new_gdbarch == NULL) { if (gdbarch_debug) fprintf_unfiltered (gdb_stdlog, "gdbarch_update: Target rejected architecture\n"); + swapin_gdbarch_swap (old_gdbarch); + current_gdbarch = old_gdbarch; return 0; } - /* Did the architecture change? No. Do nothing. */ - if (current_gdbarch == new_gdbarch) + /* Did the architecture change? No. Oops, put the old architecture + back. */ + if (old_gdbarch == new_gdbarch) { if (gdbarch_debug) fprintf_unfiltered (gdb_stdlog, "gdbarch_update: Architecture 0x%08lx (%s) unchanged\n", (long) new_gdbarch, new_gdbarch->bfd_arch_info->printable_name); + swapin_gdbarch_swap (old_gdbarch); + current_gdbarch = old_gdbarch; return 1; } - /* Swap all data belonging to the old target out */ - swapout_gdbarch_swap (current_gdbarch); - - /* Is this a pre-existing architecture? Yes. Swap it in. */ - for (list = ®o->arches; - (*list) != NULL; - list = &(*list)->next) - { - if ((*list)->gdbarch == new_gdbarch) - { - if (gdbarch_debug) - fprintf_unfiltered (gdb_stdlog, - "gdbarch_update: Previous architecture 0x%08lx (%s) selected\n", - (long) new_gdbarch, - new_gdbarch->bfd_arch_info->printable_name); - current_gdbarch = new_gdbarch; - swapin_gdbarch_swap (new_gdbarch); - architecture_changed_event (); - return 1; - } - } - - /* Append this new architecture to this targets list. */ - (*list) = XMALLOC (struct gdbarch_list); - (*list)->next = NULL; - (*list)->gdbarch = new_gdbarch; - - /* Switch to this new architecture. Dump it out. */ + /* Is this a pre-existing architecture? Yes. Move it to the front + of the list of architectures (keeping the list sorted Most + Recently Used) and then copy it in. */ + { + struct gdbarch_list **list; + for (list = ®o->arches; + (*list) != NULL; + list = &(*list)->next) + { + if ((*list)->gdbarch == new_gdbarch) + { + struct gdbarch_list *this; + if (gdbarch_debug) + fprintf_unfiltered (gdb_stdlog, + "gdbarch_update: Previous architecture 0x%08lx (%s) selected\n", + (long) new_gdbarch, + new_gdbarch->bfd_arch_info->printable_name); + /* Unlink this. */ + this = (*list); + (*list) = this->next; + /* Insert in the front. */ + this->next = rego->arches; + rego->arches = this; + /* Copy the new architecture in. */ + current_gdbarch = new_gdbarch; + swapin_gdbarch_swap (new_gdbarch); + architecture_changed_event (); + return 1; + } + } + } + + /* Prepend this new architecture to the architecture list (keep the + list sorted Most Recently Used). */ + { + struct gdbarch_list *this = XMALLOC (struct gdbarch_list); + this->next = rego->arches; + this->gdbarch = new_gdbarch; + rego->arches = this; + } + + /* Switch to this new architecture marking it initialized. */ current_gdbarch = new_gdbarch; + current_gdbarch->initialized_p = 1; if (gdbarch_debug) { fprintf_unfiltered (gdb_stdlog, @@ -4867,10 +5351,8 @@ gdbarch_update_p (struct gdbarch_info info) called. */ init_gdbarch_swap (new_gdbarch); - /* Initialize the per-architecture data-pointer of all parties that - registered an interest in this architecture. CURRENT_GDBARCH + /* Initialize the per-architecture data. CURRENT_GDBARCH must be updated before these modules are called. */ - init_gdbarch_data (new_gdbarch); architecture_changed_event (); if (gdbarch_debug)