gdbarch_deprecated_target_read_fp_ftype *deprecated_target_read_fp;
gdbarch_push_dummy_call_ftype *push_dummy_call;
gdbarch_deprecated_push_arguments_ftype *deprecated_push_arguments;
- int deprecated_use_generic_dummy_frames;
gdbarch_deprecated_push_return_address_ftype *deprecated_push_return_address;
gdbarch_deprecated_dummy_write_sp_ftype *deprecated_dummy_write_sp;
int deprecated_register_size;
int call_dummy_location;
- CORE_ADDR deprecated_call_dummy_start_offset;
- CORE_ADDR deprecated_call_dummy_breakpoint_offset;
- int deprecated_call_dummy_length;
- LONGEST * deprecated_call_dummy_words;
- int deprecated_sizeof_call_dummy_words;
- gdbarch_deprecated_fix_call_dummy_ftype *deprecated_fix_call_dummy;
gdbarch_push_dummy_code_ftype *push_dummy_code;
- gdbarch_deprecated_push_dummy_frame_ftype *deprecated_push_dummy_frame;
gdbarch_deprecated_do_registers_info_ftype *deprecated_do_registers_info;
gdbarch_print_registers_info_ftype *print_registers_info;
gdbarch_print_float_info_ftype *print_float_info;
gdbarch_cannot_store_register_ftype *cannot_store_register;
gdbarch_get_longjmp_target_ftype *get_longjmp_target;
gdbarch_deprecated_pc_in_call_dummy_ftype *deprecated_pc_in_call_dummy;
- gdbarch_deprecated_init_frame_pc_first_ftype *deprecated_init_frame_pc_first;
gdbarch_deprecated_init_frame_pc_ftype *deprecated_init_frame_pc;
int believe_pcc_promotion;
- int believe_pcc_promotion_type;
gdbarch_deprecated_get_saved_register_ftype *deprecated_get_saved_register;
gdbarch_deprecated_register_convertible_ftype *deprecated_register_convertible;
gdbarch_deprecated_register_convert_to_virtual_ftype *deprecated_register_convert_to_virtual;
gdbarch_deprecated_reg_struct_has_addr_ftype *deprecated_reg_struct_has_addr;
gdbarch_stabs_argument_has_addr_ftype *stabs_argument_has_addr;
int frame_red_zone_size;
- int parm_boundary;
const struct floatformat * float_format;
const struct floatformat * double_format;
const struct floatformat * long_double_format;
gdbarch_skip_solib_resolver_ftype *skip_solib_resolver;
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_sigtramp_start_ftype *sigtramp_start;
- gdbarch_sigtramp_end_ftype *sigtramp_end;
gdbarch_in_function_epilogue_p_ftype *in_function_epilogue_p;
gdbarch_construct_inferior_arguments_ftype *construct_inferior_arguments;
gdbarch_elf_make_msymbol_special_ftype *elf_make_msymbol_special;
0, /* deprecated_target_read_fp */
0, /* push_dummy_call */
0, /* deprecated_push_arguments */
- 0, /* deprecated_use_generic_dummy_frames */
0, /* deprecated_push_return_address */
0, /* deprecated_dummy_write_sp */
0, /* deprecated_register_size */
0, /* call_dummy_location */
- 0, /* deprecated_call_dummy_start_offset */
- 0, /* deprecated_call_dummy_breakpoint_offset */
- 0, /* deprecated_call_dummy_length */
- 0, /* deprecated_call_dummy_words */
- 0, /* deprecated_sizeof_call_dummy_words */
- 0, /* deprecated_fix_call_dummy */
0, /* push_dummy_code */
- 0, /* deprecated_push_dummy_frame */
0, /* deprecated_do_registers_info */
default_print_registers_info, /* print_registers_info */
0, /* print_float_info */
0, /* cannot_fetch_register */
0, /* cannot_store_register */
0, /* get_longjmp_target */
- generic_pc_in_call_dummy, /* deprecated_pc_in_call_dummy */
- 0, /* deprecated_init_frame_pc_first */
+ deprecated_pc_in_call_dummy, /* deprecated_pc_in_call_dummy */
0, /* deprecated_init_frame_pc */
0, /* believe_pcc_promotion */
- 0, /* believe_pcc_promotion_type */
0, /* deprecated_get_saved_register */
0, /* deprecated_register_convertible */
0, /* deprecated_register_convert_to_virtual */
0, /* deprecated_reg_struct_has_addr */
default_stabs_argument_has_addr, /* stabs_argument_has_addr */
0, /* frame_red_zone_size */
- 0, /* parm_boundary */
0, /* float_format */
0, /* double_format */
0, /* long_double_format */
generic_skip_solib_resolver, /* skip_solib_resolver */
0, /* in_solib_call_trampoline */
0, /* in_solib_return_trampoline */
- 0, /* pc_in_sigtramp */
- 0, /* sigtramp_start */
- 0, /* sigtramp_end */
generic_in_function_epilogue_p, /* in_function_epilogue_p */
construct_inferior_arguments, /* construct_inferior_arguments */
0, /* elf_make_msymbol_special */
current_gdbarch->deprecated_register_raw_size = generic_register_size;
current_gdbarch->deprecated_register_virtual_size = generic_register_size;
current_gdbarch->deprecated_fp_regnum = -1;
- current_gdbarch->deprecated_use_generic_dummy_frames = 1;
current_gdbarch->call_dummy_location = AT_ENTRY_POINT;
- current_gdbarch->deprecated_call_dummy_words = legacy_call_dummy_words;
- current_gdbarch->deprecated_sizeof_call_dummy_words = legacy_sizeof_call_dummy_words;
current_gdbarch->print_registers_info = default_print_registers_info;
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->deprecated_pc_in_call_dummy = generic_pc_in_call_dummy;
+ current_gdbarch->deprecated_pc_in_call_dummy = deprecated_pc_in_call_dummy;
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->skip_solib_resolver = generic_skip_solib_resolver;
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;
/* Skip verify of deprecated_target_read_fp, has predicate */
/* Skip verify of push_dummy_call, has predicate */
/* Skip verify of deprecated_push_arguments, has predicate */
- /* Skip verify of deprecated_use_generic_dummy_frames, invalid_p == 0 */
/* Skip verify of deprecated_push_return_address, has predicate */
/* Skip verify of deprecated_dummy_write_sp, has predicate */
/* Skip verify of call_dummy_location, invalid_p == 0 */
- /* Skip verify of deprecated_call_dummy_words, invalid_p == 0 */
- /* Skip verify of deprecated_sizeof_call_dummy_words, invalid_p == 0 */
- /* Skip verify of deprecated_fix_call_dummy, has predicate */
/* Skip verify of push_dummy_code, has predicate */
- /* Skip verify of deprecated_push_dummy_frame, has predicate */
/* Skip verify of deprecated_do_registers_info, has predicate */
/* Skip verify of print_registers_info, invalid_p == 0 */
/* Skip verify of print_float_info, has predicate */
/* Skip verify of cannot_store_register, invalid_p == 0 */
/* Skip verify of get_longjmp_target, has predicate */
/* Skip verify of deprecated_pc_in_call_dummy, has predicate */
- /* Skip verify of deprecated_init_frame_pc_first, has predicate */
/* Skip verify of deprecated_init_frame_pc, has predicate */
/* Skip verify of deprecated_get_saved_register, has predicate */
/* Skip verify of deprecated_register_convertible, has predicate */
/* Skip verify of skip_solib_resolver, 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 sigtramp_start, has predicate */
- /* Skip verify of sigtramp_end, has predicate */
/* Skip verify of in_function_epilogue_p, invalid_p == 0 */
/* Skip verify of construct_inferior_arguments, invalid_p == 0 */
/* Skip verify of elf_make_msymbol_special, invalid_p == 0 */
"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 = %d\n",
- BELIEVE_PCC_PROMOTION_TYPE);
-#endif
#ifdef BREAKPOINT_FROM_PC
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"gdbarch_dump: DECR_PC_AFTER_BREAK = %ld\n",
(long) DECR_PC_AFTER_BREAK);
#endif
-#ifdef DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET # %s\n",
- XSTRING (DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET));
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET = %ld\n",
- (long) DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET);
-#endif
-#ifdef DEPRECATED_CALL_DUMMY_LENGTH
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_CALL_DUMMY_LENGTH # %s\n",
- XSTRING (DEPRECATED_CALL_DUMMY_LENGTH));
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_CALL_DUMMY_LENGTH = %d\n",
- DEPRECATED_CALL_DUMMY_LENGTH);
-#endif
-#ifdef DEPRECATED_CALL_DUMMY_START_OFFSET
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_CALL_DUMMY_START_OFFSET # %s\n",
- XSTRING (DEPRECATED_CALL_DUMMY_START_OFFSET));
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_CALL_DUMMY_START_OFFSET = %ld\n",
- (long) DEPRECATED_CALL_DUMMY_START_OFFSET);
-#endif
-#ifdef DEPRECATED_CALL_DUMMY_WORDS
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_CALL_DUMMY_WORDS # %s\n",
- XSTRING (DEPRECATED_CALL_DUMMY_WORDS));
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_CALL_DUMMY_WORDS = 0x%08lx\n",
- (long) DEPRECATED_CALL_DUMMY_WORDS);
-#endif
#ifdef DEPRECATED_DO_REGISTERS_INFO_P
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
(long) current_gdbarch->deprecated_extract_struct_value_address
/*DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS ()*/);
#endif
-#ifdef DEPRECATED_FIX_CALL_DUMMY_P
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "DEPRECATED_FIX_CALL_DUMMY_P()",
- XSTRING (DEPRECATED_FIX_CALL_DUMMY_P ()));
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_FIX_CALL_DUMMY_P() = %d\n",
- DEPRECATED_FIX_CALL_DUMMY_P ());
-#endif
-#ifdef DEPRECATED_FIX_CALL_DUMMY
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "DEPRECATED_FIX_CALL_DUMMY(dummy, pc, fun, nargs, args, type, gcc_p)",
- XSTRING (DEPRECATED_FIX_CALL_DUMMY (dummy, pc, fun, nargs, args, type, gcc_p)));
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_FIX_CALL_DUMMY = <0x%08lx>\n",
- (long) current_gdbarch->deprecated_fix_call_dummy
- /*DEPRECATED_FIX_CALL_DUMMY ()*/);
-#endif
#ifdef DEPRECATED_FP_REGNUM
fprintf_unfiltered (file,
"gdbarch_dump: DEPRECATED_FP_REGNUM # %s\n",
(long) current_gdbarch->deprecated_init_frame_pc
/*DEPRECATED_INIT_FRAME_PC ()*/);
#endif
-#ifdef DEPRECATED_INIT_FRAME_PC_FIRST_P
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "DEPRECATED_INIT_FRAME_PC_FIRST_P()",
- XSTRING (DEPRECATED_INIT_FRAME_PC_FIRST_P ()));
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_INIT_FRAME_PC_FIRST_P() = %d\n",
- DEPRECATED_INIT_FRAME_PC_FIRST_P ());
-#endif
-#ifdef DEPRECATED_INIT_FRAME_PC_FIRST
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "DEPRECATED_INIT_FRAME_PC_FIRST(fromleaf, prev)",
- XSTRING (DEPRECATED_INIT_FRAME_PC_FIRST (fromleaf, prev)));
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_INIT_FRAME_PC_FIRST = <0x%08lx>\n",
- (long) current_gdbarch->deprecated_init_frame_pc_first
- /*DEPRECATED_INIT_FRAME_PC_FIRST ()*/);
-#endif
#ifdef DEPRECATED_MAX_REGISTER_RAW_SIZE_P
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
(long) current_gdbarch->deprecated_push_arguments
/*DEPRECATED_PUSH_ARGUMENTS ()*/);
#endif
-#ifdef DEPRECATED_PUSH_DUMMY_FRAME_P
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "DEPRECATED_PUSH_DUMMY_FRAME_P()",
- XSTRING (DEPRECATED_PUSH_DUMMY_FRAME_P ()));
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_PUSH_DUMMY_FRAME_P() = %d\n",
- DEPRECATED_PUSH_DUMMY_FRAME_P ());
-#endif
-#ifdef DEPRECATED_PUSH_DUMMY_FRAME
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "DEPRECATED_PUSH_DUMMY_FRAME(-)",
- XSTRING (DEPRECATED_PUSH_DUMMY_FRAME (-)));
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_PUSH_DUMMY_FRAME = <0x%08lx>\n",
- (long) current_gdbarch->deprecated_push_dummy_frame
- /*DEPRECATED_PUSH_DUMMY_FRAME ()*/);
-#endif
#ifdef DEPRECATED_PUSH_RETURN_ADDRESS_P
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
(long) current_gdbarch->deprecated_save_dummy_frame_tos
/*DEPRECATED_SAVE_DUMMY_FRAME_TOS ()*/);
#endif
-#ifdef DEPRECATED_SIZEOF_CALL_DUMMY_WORDS
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_SIZEOF_CALL_DUMMY_WORDS # %s\n",
- XSTRING (DEPRECATED_SIZEOF_CALL_DUMMY_WORDS));
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_SIZEOF_CALL_DUMMY_WORDS = %d\n",
- DEPRECATED_SIZEOF_CALL_DUMMY_WORDS);
-#endif
#ifdef DEPRECATED_STACK_ALIGN_P
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
(long) current_gdbarch->deprecated_target_read_fp
/*DEPRECATED_TARGET_READ_FP ()*/);
#endif
-#ifdef DEPRECATED_USE_GENERIC_DUMMY_FRAMES
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_USE_GENERIC_DUMMY_FRAMES # %s\n",
- XSTRING (DEPRECATED_USE_GENERIC_DUMMY_FRAMES));
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_USE_GENERIC_DUMMY_FRAMES = %d\n",
- DEPRECATED_USE_GENERIC_DUMMY_FRAMES);
-#endif
#ifdef DWARF2_REG_TO_REGNUM
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"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 = %d\n",
- PARM_BOUNDARY);
-#endif
-#ifdef PC_IN_SIGTRAMP
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "PC_IN_SIGTRAMP(pc, name)",
- XSTRING (PC_IN_SIGTRAMP (pc, name)));
- 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",
(long) current_gdbarch->sdb_reg_to_regnum
/*SDB_REG_TO_REGNUM ()*/);
#endif
-#ifdef SIGTRAMP_END_P
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "SIGTRAMP_END_P()",
- XSTRING (SIGTRAMP_END_P ()));
- fprintf_unfiltered (file,
- "gdbarch_dump: SIGTRAMP_END_P() = %d\n",
- SIGTRAMP_END_P ());
-#endif
-#ifdef SIGTRAMP_END
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "SIGTRAMP_END(pc)",
- XSTRING (SIGTRAMP_END (pc)));
- fprintf_unfiltered (file,
- "gdbarch_dump: SIGTRAMP_END = <0x%08lx>\n",
- (long) current_gdbarch->sigtramp_end
- /*SIGTRAMP_END ()*/);
-#endif
-#ifdef SIGTRAMP_START_P
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "SIGTRAMP_START_P()",
- XSTRING (SIGTRAMP_START_P ()));
- fprintf_unfiltered (file,
- "gdbarch_dump: SIGTRAMP_START_P() = %d\n",
- SIGTRAMP_START_P ());
-#endif
-#ifdef SIGTRAMP_START
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "SIGTRAMP_START(pc)",
- XSTRING (SIGTRAMP_START (pc)));
- fprintf_unfiltered (file,
- "gdbarch_dump: SIGTRAMP_START = <0x%08lx>\n",
- (long) current_gdbarch->sigtramp_start
- /*SIGTRAMP_START ()*/);
-#endif
#ifdef SKIP_PROLOGUE
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
}
CORE_ADDR
-gdbarch_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr)
+gdbarch_push_dummy_call (struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->push_dummy_call != NULL);
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_push_dummy_call called\n");
- return gdbarch->push_dummy_call (gdbarch, func_addr, regcache, bp_addr, nargs, args, sp, struct_return, struct_addr);
+ return gdbarch->push_dummy_call (gdbarch, function, regcache, bp_addr, nargs, args, sp, struct_return, struct_addr);
}
void
gdbarch->deprecated_push_arguments = deprecated_push_arguments;
}
-int
-gdbarch_deprecated_use_generic_dummy_frames (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- /* Skip verify of deprecated_use_generic_dummy_frames, invalid_p == 0 */
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_use_generic_dummy_frames called\n");
- return gdbarch->deprecated_use_generic_dummy_frames;
-}
-
-void
-set_gdbarch_deprecated_use_generic_dummy_frames (struct gdbarch *gdbarch,
- int deprecated_use_generic_dummy_frames)
-{
- gdbarch->deprecated_use_generic_dummy_frames = deprecated_use_generic_dummy_frames;
-}
-
int
gdbarch_deprecated_push_return_address_p (struct gdbarch *gdbarch)
{
gdbarch->call_dummy_location = call_dummy_location;
}
-CORE_ADDR
-gdbarch_deprecated_call_dummy_start_offset (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_call_dummy_start_offset called\n");
- return gdbarch->deprecated_call_dummy_start_offset;
-}
-
-void
-set_gdbarch_deprecated_call_dummy_start_offset (struct gdbarch *gdbarch,
- CORE_ADDR deprecated_call_dummy_start_offset)
-{
- gdbarch->deprecated_call_dummy_start_offset = deprecated_call_dummy_start_offset;
-}
-
-CORE_ADDR
-gdbarch_deprecated_call_dummy_breakpoint_offset (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_call_dummy_breakpoint_offset called\n");
- return gdbarch->deprecated_call_dummy_breakpoint_offset;
-}
-
-void
-set_gdbarch_deprecated_call_dummy_breakpoint_offset (struct gdbarch *gdbarch,
- CORE_ADDR deprecated_call_dummy_breakpoint_offset)
-{
- gdbarch->deprecated_call_dummy_breakpoint_offset = deprecated_call_dummy_breakpoint_offset;
-}
-
-int
-gdbarch_deprecated_call_dummy_length (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_call_dummy_length called\n");
- return gdbarch->deprecated_call_dummy_length;
-}
-
-void
-set_gdbarch_deprecated_call_dummy_length (struct gdbarch *gdbarch,
- int deprecated_call_dummy_length)
-{
- gdbarch->deprecated_call_dummy_length = deprecated_call_dummy_length;
-}
-
-LONGEST *
-gdbarch_deprecated_call_dummy_words (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- /* Skip verify of deprecated_call_dummy_words, invalid_p == 0 */
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_call_dummy_words called\n");
- return gdbarch->deprecated_call_dummy_words;
-}
-
-void
-set_gdbarch_deprecated_call_dummy_words (struct gdbarch *gdbarch,
- LONGEST * deprecated_call_dummy_words)
-{
- gdbarch->deprecated_call_dummy_words = deprecated_call_dummy_words;
-}
-
-int
-gdbarch_deprecated_sizeof_call_dummy_words (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- /* Skip verify of deprecated_sizeof_call_dummy_words, invalid_p == 0 */
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_sizeof_call_dummy_words called\n");
- return gdbarch->deprecated_sizeof_call_dummy_words;
-}
-
-void
-set_gdbarch_deprecated_sizeof_call_dummy_words (struct gdbarch *gdbarch,
- int deprecated_sizeof_call_dummy_words)
-{
- gdbarch->deprecated_sizeof_call_dummy_words = deprecated_sizeof_call_dummy_words;
-}
-
-int
-gdbarch_deprecated_fix_call_dummy_p (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- return gdbarch->deprecated_fix_call_dummy != NULL;
-}
-
-void
-gdbarch_deprecated_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);
- gdb_assert (gdbarch->deprecated_fix_call_dummy != NULL);
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_fix_call_dummy called\n");
- gdbarch->deprecated_fix_call_dummy (dummy, pc, fun, nargs, args, type, gcc_p);
-}
-
-void
-set_gdbarch_deprecated_fix_call_dummy (struct gdbarch *gdbarch,
- gdbarch_deprecated_fix_call_dummy_ftype deprecated_fix_call_dummy)
-{
- gdbarch->deprecated_fix_call_dummy = deprecated_fix_call_dummy;
-}
-
int
gdbarch_push_dummy_code_p (struct gdbarch *gdbarch)
{
gdbarch->push_dummy_code = push_dummy_code;
}
-int
-gdbarch_deprecated_push_dummy_frame_p (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- return gdbarch->deprecated_push_dummy_frame != NULL;
-}
-
-void
-gdbarch_deprecated_push_dummy_frame (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- gdb_assert (gdbarch->deprecated_push_dummy_frame != NULL);
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_push_dummy_frame called\n");
- gdbarch->deprecated_push_dummy_frame ();
-}
-
-void
-set_gdbarch_deprecated_push_dummy_frame (struct gdbarch *gdbarch,
- gdbarch_deprecated_push_dummy_frame_ftype deprecated_push_dummy_frame)
-{
- gdbarch->deprecated_push_dummy_frame = deprecated_push_dummy_frame;
-}
-
int
gdbarch_deprecated_do_registers_info_p (struct gdbarch *gdbarch)
{
gdbarch_deprecated_pc_in_call_dummy_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
- return gdbarch->deprecated_pc_in_call_dummy != generic_pc_in_call_dummy;
+ return gdbarch->deprecated_pc_in_call_dummy != deprecated_pc_in_call_dummy;
}
int
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->deprecated_pc_in_call_dummy != NULL);
- /* Do not check predicate: gdbarch->deprecated_pc_in_call_dummy != generic_pc_in_call_dummy, allow call. */
+ /* Do not check predicate: gdbarch->deprecated_pc_in_call_dummy != deprecated_pc_in_call_dummy, allow call. */
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_pc_in_call_dummy called\n");
return gdbarch->deprecated_pc_in_call_dummy (pc, sp, frame_address);
gdbarch->deprecated_pc_in_call_dummy = deprecated_pc_in_call_dummy;
}
-int
-gdbarch_deprecated_init_frame_pc_first_p (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- return gdbarch->deprecated_init_frame_pc_first != NULL;
-}
-
-CORE_ADDR
-gdbarch_deprecated_init_frame_pc_first (struct gdbarch *gdbarch, int fromleaf, struct frame_info *prev)
-{
- gdb_assert (gdbarch != NULL);
- gdb_assert (gdbarch->deprecated_init_frame_pc_first != NULL);
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_init_frame_pc_first called\n");
- return gdbarch->deprecated_init_frame_pc_first (fromleaf, prev);
-}
-
-void
-set_gdbarch_deprecated_init_frame_pc_first (struct gdbarch *gdbarch,
- gdbarch_deprecated_init_frame_pc_first_ftype deprecated_init_frame_pc_first)
-{
- gdbarch->deprecated_init_frame_pc_first = deprecated_init_frame_pc_first;
-}
-
int
gdbarch_deprecated_init_frame_pc_p (struct gdbarch *gdbarch)
{
gdbarch->believe_pcc_promotion = believe_pcc_promotion;
}
-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;
-}
-
-void
-set_gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch,
- int believe_pcc_promotion_type)
-{
- gdbarch->believe_pcc_promotion_type = believe_pcc_promotion_type;
-}
-
int
gdbarch_deprecated_get_saved_register_p (struct gdbarch *gdbarch)
{
gdbarch->frame_red_zone_size = frame_red_zone_size;
}
-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;
-}
-
-void
-set_gdbarch_parm_boundary (struct gdbarch *gdbarch,
- int parm_boundary)
-{
- gdbarch->parm_boundary = parm_boundary;
-}
-
const struct floatformat *
gdbarch_float_format (struct gdbarch *gdbarch)
{
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);
- gdb_assert (gdbarch->pc_in_sigtramp != NULL);
- 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_sigtramp_start_p (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- return gdbarch->sigtramp_start != NULL;
-}
-
-CORE_ADDR
-gdbarch_sigtramp_start (struct gdbarch *gdbarch, CORE_ADDR pc)
-{
- gdb_assert (gdbarch != NULL);
- gdb_assert (gdbarch->sigtramp_start != NULL);
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_sigtramp_start called\n");
- return gdbarch->sigtramp_start (pc);
-}
-
-void
-set_gdbarch_sigtramp_start (struct gdbarch *gdbarch,
- gdbarch_sigtramp_start_ftype sigtramp_start)
-{
- gdbarch->sigtramp_start = sigtramp_start;
-}
-
-int
-gdbarch_sigtramp_end_p (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- return gdbarch->sigtramp_end != NULL;
-}
-
-CORE_ADDR
-gdbarch_sigtramp_end (struct gdbarch *gdbarch, CORE_ADDR pc)
-{
- gdb_assert (gdbarch != NULL);
- gdb_assert (gdbarch->sigtramp_end != NULL);
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_sigtramp_end called\n");
- return gdbarch->sigtramp_end (pc);
-}
-
-void
-set_gdbarch_sigtramp_end (struct gdbarch *gdbarch,
- gdbarch_sigtramp_end_ftype sigtramp_end)
-{
- gdbarch->sigtramp_end = sigtramp_end;
-}
-
int
gdbarch_in_function_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR addr)
{
{
unsigned index;
int init_p;
- gdbarch_data_init_ftype *init;
+ gdbarch_data_pre_init_ftype *pre_init;
+ gdbarch_data_post_init_ftype *post_init;
};
struct gdbarch_data_registration
0, NULL,
};
-struct gdbarch_data *
-register_gdbarch_data (gdbarch_data_init_ftype *init)
+static struct gdbarch_data *
+gdbarch_data_register (gdbarch_data_pre_init_ftype *pre_init,
+ gdbarch_data_post_init_ftype *post_init)
{
struct gdbarch_data_registration **curr;
/* Append the new registraration. */
(*curr)->next = NULL;
(*curr)->data = XMALLOC (struct gdbarch_data);
(*curr)->data->index = gdbarch_data_registry.nr++;
- (*curr)->data->init = init;
+ (*curr)->data->pre_init = pre_init;
+ (*curr)->data->post_init = post_init;
(*curr)->data->init_p = 1;
return (*curr)->data;
}
+struct gdbarch_data *
+gdbarch_data_register_pre_init (gdbarch_data_pre_init_ftype *pre_init)
+{
+ return gdbarch_data_register (pre_init, NULL);
+}
+
+struct gdbarch_data *
+gdbarch_data_register_post_init (gdbarch_data_post_init_ftype *post_init)
+{
+ return gdbarch_data_register (NULL, post_init);
+}
/* Create/delete the gdbarch data vector. */
data-pointer. */
void
-set_gdbarch_data (struct gdbarch *gdbarch,
- struct gdbarch_data *data,
- void *pointer)
+deprecated_set_gdbarch_data (struct gdbarch *gdbarch,
+ struct gdbarch_data *data,
+ void *pointer)
{
gdb_assert (data->index < gdbarch->nr_data);
gdb_assert (gdbarch->data[data->index] == NULL);
+ gdb_assert (data->pre_init == NULL);
gdbarch->data[data->index] = pointer;
}
gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *data)
{
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)
+ if (gdbarch->data[data->index] == NULL)
{
- /* 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;
+ /* The data-pointer isn't initialized, call init() to get a
+ value. */
+ if (data->pre_init != NULL)
+ /* Mid architecture creation: pass just the obstack, and not
+ the entire architecture, as that way it isn't possible for
+ pre-init code to refer to undefined architecture
+ fields. */
+ gdbarch->data[data->index] = data->pre_init (gdbarch->obstack);
+ else if (gdbarch->initialized_p
+ && data->post_init != NULL)
+ /* Post architecture creation: pass the entire architecture
+ (as all fields are valid), but be careful to also detect
+ recursive references. */
+ {
+ gdb_assert (data->init_p);
+ data->init_p = 0;
+ gdbarch->data[data->index] = data->post_init (gdbarch);
+ data->init_p = 1;
+ }
+ else
+ /* The architecture initialization hasn't completed - punt -
+ hope that the caller knows what they are doing. Once
+ deprecated_set_gdbarch_data has been initialized, this can be
+ changed to an internal error. */
+ return NULL;
gdb_assert (gdbarch->data[data->index] != NULL);
}
return gdbarch->data[data->index];