diff options
42 files changed, 272 insertions, 154 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4ca9b31..750a802 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,53 @@ +2002-08-23 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (STORE_RETURN_VALUE): Add regcache parameter. + (DEPRECATED_STORE_RETURN_VALUE): New method. + (EXTRACT_RETURN_VALUE): Make buffer parameter a void pointer. + * gdbarch.h, gdbarch.c: Re-generate. + + * values.c (set_return_value): Pass current_regcache to + STORE_RETURN_VALUE. + * arch-utils.h (legacy_store_return_value): Declare. + * arch-utils.c (legacy_store_return_value): New function. + (legacy_extract_return_value): Update parameters. + + * config/pa/tm-hppa.h (DEPRECATED_STORE_RETURN_VALUE): Rename + STORE_RETURN_VALUE. + * config/pa/tm-hppa64.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. + * config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. + * config/z8k/tm-z8k.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. + * config/sparc/tm-sparclet.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. + * config/mn10200/tm-mn10200.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. + * config/m68k/tm-linux.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. + * config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. + * config/m32r/tm-m32r.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. + * config/h8500/tm-h8500.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. + * config/h8300/tm-h8300.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. + + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * i386-tdep.c (i386_extract_return_value): Update. + * arch-utils.c (legacy_extract_return_value): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * d10v-tdep.c (d10v_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * m68k-tdep.c (m68k_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * alpha-tdep.c (alpha_gdbarch_init): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * i386-tdep.c (i386_gdbarch_init): Update. + 2002-08-23 Andrew Cagney <ac131313@redhat.com> * config/djgpp/fnchange.lst: Add entries for bfd/elf32-ppcqnx.c, @@ -93,7 +143,6 @@ i960-*-vxworks* obsolete. * MAINTAINERS: Note that the i960 is obsolete. ->>>>>>> 1.3141 2002-08-21 Corinna Vinschen <vinschen@redhat.com * aix-thread.c (aix_thread_detach): Disable thread debugging on @@ -124,7 +173,6 @@ * config/mips/tm-mips.h (DEFAULT_MIPS_TYPE): Delete unused macro. * config/mips/tm-embed.h (DEFAULT_MIPS_TYPE): Delete unused macro. ->>>>>>> 1.3134 2002-08-21 Jim Blandy <jimb@redhat.com> * valops.c (value_cast): Simplify and correct logic for doing a @@ -287,7 +335,6 @@ mips_push_dummy_frame, mips_pop_frame, mips_skip_prologue, mips_breakpoint_from_pc, mips_call_dummy_address): Make static. ->>>>>>> 1.3128 2002-08-19 Michael Snyder <msnyder@redhat.com> * mips-tdep.c (mips_frame_num_args): New function. diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c index 0f5f7d7..7018d39 100644 --- a/gdb/alpha-tdep.c +++ b/gdb/alpha-tdep.c @@ -54,7 +54,6 @@ static gdbarch_register_convert_to_virtual_ftype static gdbarch_register_convert_to_raw_ftype alpha_register_convert_to_raw; static gdbarch_store_struct_return_ftype alpha_store_struct_return; static gdbarch_deprecated_extract_return_value_ftype alpha_extract_return_value; -static gdbarch_store_return_value_ftype alpha_store_return_value; static gdbarch_deprecated_extract_struct_value_address_ftype alpha_extract_struct_value_address; static gdbarch_use_struct_convention_ftype alpha_use_struct_convention; @@ -1860,7 +1859,7 @@ alpha_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_deprecated_extract_return_value (gdbarch, alpha_extract_return_value); set_gdbarch_store_struct_return (gdbarch, alpha_store_struct_return); - set_gdbarch_store_return_value (gdbarch, alpha_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, alpha_store_return_value); set_gdbarch_deprecated_extract_struct_value_address (gdbarch, alpha_extract_struct_value_address); diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c index c11c39c..ecdecaf 100644 --- a/gdb/arch-utils.c +++ b/gdb/arch-utils.c @@ -95,12 +95,26 @@ legacy_breakpoint_from_pc (CORE_ADDR * pcptr, int *lenptr) register cache. */ void legacy_extract_return_value (struct type *type, struct regcache *regcache, - char *valbuf) + void *valbuf) { char *registers = deprecated_grub_regcache_for_registers (regcache); - DEPRECATED_EXTRACT_RETURN_VALUE (type, registers, valbuf); + bfd_byte *buf = valbuf; + DEPRECATED_EXTRACT_RETURN_VALUE (type, registers, buf); } +/* Implementation of store return value that grubs the register cache. + Takes a local copy of the buffer to avoid const problems. */ +void +legacy_store_return_value (struct type *type, struct regcache *regcache, + const void *buf) +{ + bfd_byte *b = alloca (TYPE_LENGTH (type)); + gdb_assert (regcache == current_regcache); + memcpy (b, buf, TYPE_LENGTH (type)); + DEPRECATED_STORE_RETURN_VALUE (type, b); +} + + int legacy_register_sim_regno (int regnum) { diff --git a/gdb/arch-utils.h b/gdb/arch-utils.h index 3552cd8..91aa2f8 100644 --- a/gdb/arch-utils.h +++ b/gdb/arch-utils.h @@ -43,6 +43,9 @@ extern gdbarch_breakpoint_from_pc_ftype legacy_breakpoint_from_pc; register cache. */ extern gdbarch_extract_return_value_ftype legacy_extract_return_value; +/* Implementation of store return value that grubs the register cache. */ +extern gdbarch_store_return_value_ftype legacy_store_return_value; + /* Frameless functions not identifable. */ extern gdbarch_frameless_function_invocation_ftype generic_frameless_function_invocation_not; diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 037598d..b896b68 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -2926,7 +2926,7 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Returning results. */ set_gdbarch_deprecated_extract_return_value (gdbarch, arm_extract_return_value); - set_gdbarch_store_return_value (gdbarch, arm_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, arm_store_return_value); set_gdbarch_store_struct_return (gdbarch, arm_store_struct_return); set_gdbarch_use_struct_convention (gdbarch, arm_use_struct_convention); set_gdbarch_deprecated_extract_struct_value_address (gdbarch, diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c index 79d0af1..b245332 100644 --- a/gdb/avr-tdep.c +++ b/gdb/avr-tdep.c @@ -1244,7 +1244,7 @@ avr_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* set_gdbarch_push_return_address (gdbarch, avr_push_return_address); */ set_gdbarch_pop_frame (gdbarch, avr_pop_frame); - set_gdbarch_store_return_value (gdbarch, avr_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, avr_store_return_value); set_gdbarch_use_struct_convention (gdbarch, generic_use_struct_convention); set_gdbarch_store_struct_return (gdbarch, avr_store_struct_return); diff --git a/gdb/config/h8300/tm-h8300.h b/gdb/config/h8300/tm-h8300.h index 1ac08db..3020e4d 100644 --- a/gdb/config/h8300/tm-h8300.h +++ b/gdb/config/h8300/tm-h8300.h @@ -175,7 +175,7 @@ extern void h8300_extract_return_value (struct type *, char *, char *); /* FIXME: Won't work with both h8/300's. */ extern void h8300_store_return_value (struct type *, char *); -#define STORE_RETURN_VALUE(TYPE,VALBUF) \ +#define DEPRECATED_STORE_RETURN_VALUE(TYPE,VALBUF) \ h8300_store_return_value(TYPE, (char *) (VALBUF)) /* struct passing and returning stuff */ diff --git a/gdb/config/h8500/tm-h8500.h b/gdb/config/h8500/tm-h8500.h index 96a93b5..30acdbe 100644 --- a/gdb/config/h8500/tm-h8500.h +++ b/gdb/config/h8500/tm-h8500.h @@ -168,7 +168,7 @@ extern struct type *h8500_register_virtual_type (int regno); /* Write into appropriate registers a function return value of type TYPE, given in virtual format. */ -#define STORE_RETURN_VALUE(TYPE,VALBUF) \ +#define DEPRECATED_STORE_RETURN_VALUE(TYPE,VALBUF) \ write_register_bytes (0, VALBUF, TYPE_LENGTH (TYPE)) /* Extract from an array REGBUF containing the (raw) register state diff --git a/gdb/config/m32r/tm-m32r.h b/gdb/config/m32r/tm-m32r.h index 9477478..648ff01 100644 --- a/gdb/config/m32r/tm-m32r.h +++ b/gdb/config/m32r/tm-m32r.h @@ -144,8 +144,8 @@ extern CORE_ADDR m32r_frame_saved_pc (struct frame_info *); ((TYPE_LENGTH (TYPE) > 4 ? 8 : 4) - TYPE_LENGTH (TYPE)), \ TYPE_LENGTH (TYPE)) -/* mvs_check STORE_RETURN_VALUE */ -#define STORE_RETURN_VALUE(TYPE, VALBUF) \ +/* mvs_check DEPRECATED_STORE_RETURN_VALUE */ +#define DEPRECATED_STORE_RETURN_VALUE(TYPE, VALBUF) \ write_register_bytes(REGISTER_BYTE (V0_REGNUM) + \ ((TYPE_LENGTH (TYPE) > 4 ? 8:4) - TYPE_LENGTH (TYPE)),\ (VALBUF), TYPE_LENGTH (TYPE)); diff --git a/gdb/config/m68k/tm-delta68.h b/gdb/config/m68k/tm-delta68.h index 7697bc4..269d134 100644 --- a/gdb/config/m68k/tm-delta68.h +++ b/gdb/config/m68k/tm-delta68.h @@ -63,7 +63,7 @@ /* When it returns a float/double value, use fp0 in sysV68. */ /* When it returns a pointer value, use a0 in sysV68. */ -#define STORE_RETURN_VALUE(TYPE,VALBUF) \ +#define DEPRECATED_STORE_RETURN_VALUE(TYPE,VALBUF) \ if (TYPE_CODE (TYPE) == TYPE_CODE_FLT) \ { \ char raw_buf[REGISTER_RAW_SIZE (FP0_REGNUM)]; \ diff --git a/gdb/config/m68k/tm-linux.h b/gdb/config/m68k/tm-linux.h index 8a7d3a5..e2889ec 100644 --- a/gdb/config/m68k/tm-linux.h +++ b/gdb/config/m68k/tm-linux.h @@ -58,7 +58,7 @@ /* Write into appropriate registers a function return value of type TYPE, given in virtual format. */ -#define STORE_RETURN_VALUE(TYPE,VALBUF) \ +#define DEPRECATED_STORE_RETURN_VALUE(TYPE,VALBUF) \ { \ if (TYPE_CODE (TYPE) == TYPE_CODE_FLT) \ { \ diff --git a/gdb/config/mn10200/tm-mn10200.h b/gdb/config/mn10200/tm-mn10200.h index 8176813..bd2e66c 100644 --- a/gdb/config/mn10200/tm-mn10200.h +++ b/gdb/config/mn10200/tm-mn10200.h @@ -148,7 +148,7 @@ extern CORE_ADDR mn10200_frame_saved_pc (struct frame_info *); extract_address (REGBUF + REGISTER_BYTE (4), \ REGISTER_RAW_SIZE (4)) -#define STORE_RETURN_VALUE(TYPE, VALBUF) \ +#define DEPRECATED_STORE_RETURN_VALUE(TYPE, VALBUF) \ { \ if (TYPE_LENGTH (TYPE) > 8) \ internal_error (__FILE__, __LINE__, "failed internal consistency check"); \ diff --git a/gdb/config/pa/tm-hppa.h b/gdb/config/pa/tm-hppa.h index e786822..6fd8c03 100644 --- a/gdb/config/pa/tm-hppa.h +++ b/gdb/config/pa/tm-hppa.h @@ -333,7 +333,7 @@ extern use_struct_convention_fn hppa_use_struct_convention; extern void hppa_store_return_value (struct type *type, char *valbuf); -#define STORE_RETURN_VALUE(TYPE,VALBUF) \ +#define DEPRECATED_STORE_RETURN_VALUE(TYPE,VALBUF) \ hppa_store_return_value (TYPE, VALBUF); /* Extract from an array REGBUF containing the (raw) register state diff --git a/gdb/config/pa/tm-hppa64.h b/gdb/config/pa/tm-hppa64.h index 10790e6..7e6e45a 100644 --- a/gdb/config/pa/tm-hppa64.h +++ b/gdb/config/pa/tm-hppa64.h @@ -260,8 +260,8 @@ call_dummy (TYPE_LENGTH (value_type) > 16) /* RM: for return command */ -#undef STORE_RETURN_VALUE -#define STORE_RETURN_VALUE(TYPE,VALBUF) \ +#undef DEPRECATED_STORE_RETURN_VALUE +#define DEPRECATED_STORE_RETURN_VALUE(TYPE,VALBUF) \ { \ if (TYPE_CODE (TYPE) == TYPE_CODE_FLT && !SOFT_FLOAT) \ write_register_bytes \ diff --git a/gdb/config/sparc/tm-sparc.h b/gdb/config/sparc/tm-sparc.h index 07c9e44..8cac258 100644 --- a/gdb/config/sparc/tm-sparc.h +++ b/gdb/config/sparc/tm-sparc.h @@ -267,7 +267,7 @@ extern CORE_ADDR sparc_skip_prologue (CORE_ADDR); /* Write into appropriate registers a function return value of type TYPE, given in virtual format. */ -#define STORE_RETURN_VALUE(TYPE, VALBUF) \ +#define DEPRECATED_STORE_RETURN_VALUE(TYPE, VALBUF) \ sparc_store_return_value (TYPE, VALBUF) extern void sparc_store_return_value (struct type *, char *); diff --git a/gdb/config/sparc/tm-sparclet.h b/gdb/config/sparc/tm-sparclet.h index 7771b27..fd25f5b 100644 --- a/gdb/config/sparc/tm-sparclet.h +++ b/gdb/config/sparc/tm-sparclet.h @@ -117,8 +117,8 @@ enum { ? 0 : REGISTER_RAW_SIZE (O0_REGNUM) - TYPE_LENGTH(TYPE)), \ TYPE_LENGTH(TYPE)); \ } -#undef STORE_RETURN_VALUE -#define STORE_RETURN_VALUE(TYPE,VALBUF) \ +#undef DEPRECATED_STORE_RETURN_VALUE +#define DEPRECATED_STORE_RETURN_VALUE(TYPE,VALBUF) \ { \ /* Other values are returned in register %o0. */ \ write_register_bytes (REGISTER_BYTE (O0_REGNUM), (VALBUF), \ diff --git a/gdb/config/z8k/tm-z8k.h b/gdb/config/z8k/tm-z8k.h index 194a257..eb96eda 100644 --- a/gdb/config/z8k/tm-z8k.h +++ b/gdb/config/z8k/tm-z8k.h @@ -148,7 +148,7 @@ extern int z8k_saved_pc_after_call (struct frame_info *frame); /* Write into appropriate registers a function return value of type TYPE, given in virtual format. */ -#define STORE_RETURN_VALUE(TYPE,VALBUF) internal_error (__FILE__, __LINE__, "failed internal consistency check"); +#define DEPRECATED_STORE_RETURN_VALUE(TYPE,VALBUF) internal_error (__FILE__, __LINE__, "failed internal consistency check"); /* Extract from an array REGBUF containing the (raw) register state the address in which a function should return its structure value, diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c index 02605f0..c53c7ea 100644 --- a/gdb/cris-tdep.c +++ b/gdb/cris-tdep.c @@ -4161,7 +4161,7 @@ cris_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) { set_gdbarch_double_bit (gdbarch, 32); set_gdbarch_push_arguments (gdbarch, cris_abi_original_push_arguments); - set_gdbarch_store_return_value (gdbarch, + set_gdbarch_deprecated_store_return_value (gdbarch, cris_abi_original_store_return_value); set_gdbarch_deprecated_extract_return_value (gdbarch, cris_abi_original_extract_return_value); @@ -4172,7 +4172,7 @@ cris_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) { set_gdbarch_double_bit (gdbarch, 64); set_gdbarch_push_arguments (gdbarch, cris_abi_v2_push_arguments); - set_gdbarch_store_return_value (gdbarch, cris_abi_v2_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, cris_abi_v2_store_return_value); set_gdbarch_deprecated_extract_return_value (gdbarch, cris_abi_v2_extract_return_value); set_gdbarch_reg_struct_has_addr (gdbarch, diff --git a/gdb/d10v-tdep.c b/gdb/d10v-tdep.c index afed387..4e02106 100644 --- a/gdb/d10v-tdep.c +++ b/gdb/d10v-tdep.c @@ -1612,7 +1612,7 @@ d10v_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_push_return_address (gdbarch, d10v_push_return_address); set_gdbarch_store_struct_return (gdbarch, d10v_store_struct_return); - set_gdbarch_store_return_value (gdbarch, d10v_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, d10v_store_return_value); set_gdbarch_deprecated_extract_struct_value_address (gdbarch, d10v_extract_struct_value_address); set_gdbarch_use_struct_convention (gdbarch, d10v_use_struct_convention); diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 27cd9aa..4693072 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,8 @@ +2002-08-23 Andrew Cagney <cagney@redhat.com> + + * gdbint.texinfo (Target Architecture Definition): Update + STORE_RETURN_VALUE, mention regcache. + 2002-08-21 Andrew Cagney <ac131313@redhat.com> * gdbint.texinfo (Target Architecture Definition): Document diff --git a/gdb/doc/gdbint.texinfo b/gdb/doc/gdbint.texinfo index e8bbd79..a5f4de5 100644 --- a/gdb/doc/gdbint.texinfo +++ b/gdb/doc/gdbint.texinfo @@ -3701,10 +3701,11 @@ delay slot. If a breakpoint has been placed in the instruction's delay slot, @value{GDBN} will single-step over that instruction before resuming normally. Currently only defined for the Mips. -@item STORE_RETURN_VALUE (@var{type}, @var{valbuf}) +@item STORE_RETURN_VALUE (@var{type}, @var{regcache}, @var{valbuf}) @findex STORE_RETURN_VALUE -A C expression that stores a function return value of type @var{type}, -where @var{valbuf} is the address of the value to be stored. +A C expression that writes the function return value, found in +@var{valbuf}, into the @var{regcache}. @var{type} is the type of the +value that is to be returned. @item SUN_FIXED_LBRAC_BUG @findex SUN_FIXED_LBRAC_BUG diff --git a/gdb/frv-tdep.c b/gdb/frv-tdep.c index 682d925..933faa1 100644 --- a/gdb/frv-tdep.c +++ b/gdb/frv-tdep.c @@ -44,7 +44,6 @@ static gdbarch_deprecated_extract_struct_value_address_ftype frv_extract_struct_ static gdbarch_use_struct_convention_ftype frv_use_struct_convention; static gdbarch_frameless_function_invocation_ftype frv_frameless_function_invocation; static gdbarch_init_extra_frame_info_ftype stupid_useless_init_extra_frame_info; -static gdbarch_store_return_value_ftype frv_store_return_value; static gdbarch_store_struct_return_ftype frv_store_struct_return; static gdbarch_push_arguments_ftype frv_push_arguments; static gdbarch_push_return_address_ftype frv_push_return_address; @@ -1090,7 +1089,7 @@ frv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_deprecated_extract_return_value (gdbarch, frv_extract_return_value); set_gdbarch_store_struct_return (gdbarch, frv_store_struct_return); - set_gdbarch_store_return_value (gdbarch, frv_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, frv_store_return_value); set_gdbarch_deprecated_extract_struct_value_address (gdbarch, frv_extract_struct_value_address); /* Settings for calling functions in the inferior. */ diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c index 447e3c7..e930642 100644 --- a/gdb/gdbarch.c +++ b/gdb/gdbarch.c @@ -210,14 +210,15 @@ struct gdbarch 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; gdbarch_pop_frame_ftype *pop_frame; gdbarch_store_struct_return_ftype *store_struct_return; + gdbarch_extract_return_value_ftype *extract_return_value; gdbarch_store_return_value_ftype *store_return_value; + gdbarch_deprecated_extract_return_value_ftype *deprecated_extract_return_value; + gdbarch_deprecated_store_return_value_ftype *deprecated_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; @@ -412,6 +413,7 @@ struct gdbarch startup_gdbarch = 0, 0, 0, + 0, generic_in_function_epilogue_p, construct_inferior_arguments, 0, @@ -519,8 +521,9 @@ gdbarch_alloc (const struct gdbarch_info *info, 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->extract_return_value = legacy_extract_return_value; + current_gdbarch->store_return_value = legacy_store_return_value; 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; @@ -703,10 +706,6 @@ verify_gdbarch (struct gdbarch *gdbarch) /* 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 */ - /* 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)) @@ -718,9 +717,8 @@ verify_gdbarch (struct gdbarch *gdbarch) if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && (gdbarch->store_struct_return == 0)) fprintf_unfiltered (log, "\n\tstore_struct_return"); - if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) - && (gdbarch->store_return_value == 0)) - fprintf_unfiltered (log, "\n\tstore_return_value"); + /* Skip verify of extract_return_value, invalid_p == 0 */ + /* Skip verify of store_return_value, invalid_p == 0 */ /* 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 */ @@ -1073,6 +1071,20 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) (long) current_gdbarch->deprecated_extract_struct_value_address /*DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS ()*/); #endif +#ifdef DEPRECATED_STORE_RETURN_VALUE +#if GDB_MULTI_ARCH + /* Macro might contain `[{}]' when not multi-arch */ + fprintf_unfiltered (file, + "gdbarch_dump: %s # %s\n", + "DEPRECATED_STORE_RETURN_VALUE(type, valbuf)", + XSTRING (DEPRECATED_STORE_RETURN_VALUE (type, valbuf))); +#endif + if (GDB_MULTI_ARCH) + fprintf_unfiltered (file, + "gdbarch_dump: DEPRECATED_STORE_RETURN_VALUE = 0x%08lx\n", + (long) current_gdbarch->deprecated_store_return_value + /*DEPRECATED_STORE_RETURN_VALUE ()*/); +#endif #ifdef DO_REGISTERS_INFO #if GDB_MULTI_ARCH /* Macro might contain `[{}]' when not multi-arch */ @@ -1940,8 +1952,8 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) /* Macro might contain `[{}]' when not multi-arch */ fprintf_unfiltered (file, "gdbarch_dump: %s # %s\n", - "STORE_RETURN_VALUE(type, valbuf)", - XSTRING (STORE_RETURN_VALUE (type, valbuf))); + "STORE_RETURN_VALUE(type, regcache, valbuf)", + XSTRING (STORE_RETURN_VALUE (type, regcache, valbuf))); #endif if (GDB_MULTI_ARCH) fprintf_unfiltered (file, @@ -3776,44 +3788,6 @@ set_gdbarch_return_value_on_stack (struct gdbarch *gdbarch, gdbarch->return_value_on_stack = return_value_on_stack; } -void -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, regcache, valbuf); -} - -void -set_gdbarch_extract_return_value (struct gdbarch *gdbarch, - gdbarch_extract_return_value_ftype extract_return_value) -{ - 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) { @@ -3917,7 +3891,26 @@ set_gdbarch_store_struct_return (struct gdbarch *gdbarch, } void -gdbarch_store_return_value (struct gdbarch *gdbarch, struct type *type, char *valbuf) +gdbarch_extract_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, void *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, regcache, valbuf); +} + +void +set_gdbarch_extract_return_value (struct gdbarch *gdbarch, + gdbarch_extract_return_value_ftype extract_return_value) +{ + gdbarch->extract_return_value = extract_return_value; +} + +void +gdbarch_store_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, const void *valbuf) { gdb_assert (gdbarch != NULL); if (gdbarch->store_return_value == 0) @@ -3925,7 +3918,7 @@ gdbarch_store_return_value (struct gdbarch *gdbarch, struct type *type, char *va "gdbarch: gdbarch_store_return_value invalid"); if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_store_return_value called\n"); - gdbarch->store_return_value (type, valbuf); + gdbarch->store_return_value (type, regcache, valbuf); } void @@ -3935,6 +3928,44 @@ set_gdbarch_store_return_value (struct gdbarch *gdbarch, gdbarch->store_return_value = store_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; +} + +void +gdbarch_deprecated_store_return_value (struct gdbarch *gdbarch, struct type *type, char *valbuf) +{ + gdb_assert (gdbarch != NULL); + if (gdbarch->deprecated_store_return_value == 0) + internal_error (__FILE__, __LINE__, + "gdbarch: gdbarch_deprecated_store_return_value invalid"); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_store_return_value called\n"); + gdbarch->deprecated_store_return_value (type, valbuf); +} + +void +set_gdbarch_deprecated_store_return_value (struct gdbarch *gdbarch, + gdbarch_deprecated_store_return_value_ftype deprecated_store_return_value) +{ + gdbarch->deprecated_store_return_value = deprecated_store_return_value; +} + int gdbarch_extract_struct_value_address_p (struct gdbarch *gdbarch) { diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h index d27b7c7..b76bf4a 100644 --- a/gdb/gdbarch.h +++ b/gdb/gdbarch.h @@ -1417,35 +1417,6 @@ extern void set_gdbarch_return_value_on_stack (struct gdbarch *gdbarch, gdbarch_ #endif /* Default (function) for non- multi-arch platforms. */ -#if (!GDB_MULTI_ARCH) && !defined (EXTRACT_RETURN_VALUE) -#define EXTRACT_RETURN_VALUE(type, regcache, valbuf) (legacy_extract_return_value (type, regcache, valbuf)) -#endif - -typedef void (gdbarch_extract_return_value_ftype) (struct type *type, struct regcache *regcache, char *valbuf); -extern void gdbarch_extract_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, char *valbuf); -extern void set_gdbarch_extract_return_value (struct gdbarch *gdbarch, gdbarch_extract_return_value_ftype *extract_return_value); -#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (EXTRACT_RETURN_VALUE) -#error "Non multi-arch definition of EXTRACT_RETURN_VALUE" -#endif -#if GDB_MULTI_ARCH -#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (EXTRACT_RETURN_VALUE) -#define EXTRACT_RETURN_VALUE(type, regcache, valbuf) (gdbarch_extract_return_value (current_gdbarch, type, regcache, valbuf)) -#endif -#endif - -typedef void (gdbarch_deprecated_extract_return_value_ftype) (struct type *type, char *regbuf, char *valbuf); -extern void gdbarch_deprecated_extract_return_value (struct gdbarch *gdbarch, struct type *type, char *regbuf, char *valbuf); -extern void set_gdbarch_deprecated_extract_return_value (struct gdbarch *gdbarch, gdbarch_deprecated_extract_return_value_ftype *deprecated_extract_return_value); -#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_EXTRACT_RETURN_VALUE) -#error "Non multi-arch definition of DEPRECATED_EXTRACT_RETURN_VALUE" -#endif -#if GDB_MULTI_ARCH -#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_EXTRACT_RETURN_VALUE) -#define DEPRECATED_EXTRACT_RETURN_VALUE(type, regbuf, valbuf) (gdbarch_deprecated_extract_return_value (current_gdbarch, type, regbuf, valbuf)) -#endif -#endif - -/* Default (function) for non- multi-arch platforms. */ #if (!GDB_MULTI_ARCH) && !defined (PUSH_ARGUMENTS) #define PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) (default_push_arguments (nargs, args, sp, struct_return, struct_addr)) #endif @@ -1535,15 +1506,61 @@ extern void set_gdbarch_store_struct_return (struct gdbarch *gdbarch, gdbarch_st #endif #endif -typedef void (gdbarch_store_return_value_ftype) (struct type *type, char *valbuf); -extern void gdbarch_store_return_value (struct gdbarch *gdbarch, struct type *type, char *valbuf); +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (EXTRACT_RETURN_VALUE) +#define EXTRACT_RETURN_VALUE(type, regcache, valbuf) (legacy_extract_return_value (type, regcache, valbuf)) +#endif + +typedef void (gdbarch_extract_return_value_ftype) (struct type *type, struct regcache *regcache, void *valbuf); +extern void gdbarch_extract_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, void *valbuf); +extern void set_gdbarch_extract_return_value (struct gdbarch *gdbarch, gdbarch_extract_return_value_ftype *extract_return_value); +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (EXTRACT_RETURN_VALUE) +#error "Non multi-arch definition of EXTRACT_RETURN_VALUE" +#endif +#if GDB_MULTI_ARCH +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (EXTRACT_RETURN_VALUE) +#define EXTRACT_RETURN_VALUE(type, regcache, valbuf) (gdbarch_extract_return_value (current_gdbarch, type, regcache, valbuf)) +#endif +#endif + +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (STORE_RETURN_VALUE) +#define STORE_RETURN_VALUE(type, regcache, valbuf) (legacy_store_return_value (type, regcache, valbuf)) +#endif + +typedef void (gdbarch_store_return_value_ftype) (struct type *type, struct regcache *regcache, const void *valbuf); +extern void gdbarch_store_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, const void *valbuf); extern void set_gdbarch_store_return_value (struct gdbarch *gdbarch, gdbarch_store_return_value_ftype *store_return_value); #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (STORE_RETURN_VALUE) #error "Non multi-arch definition of STORE_RETURN_VALUE" #endif #if GDB_MULTI_ARCH #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (STORE_RETURN_VALUE) -#define STORE_RETURN_VALUE(type, valbuf) (gdbarch_store_return_value (current_gdbarch, type, valbuf)) +#define STORE_RETURN_VALUE(type, regcache, valbuf) (gdbarch_store_return_value (current_gdbarch, type, regcache, valbuf)) +#endif +#endif + +typedef void (gdbarch_deprecated_extract_return_value_ftype) (struct type *type, char *regbuf, char *valbuf); +extern void gdbarch_deprecated_extract_return_value (struct gdbarch *gdbarch, struct type *type, char *regbuf, char *valbuf); +extern void set_gdbarch_deprecated_extract_return_value (struct gdbarch *gdbarch, gdbarch_deprecated_extract_return_value_ftype *deprecated_extract_return_value); +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_EXTRACT_RETURN_VALUE) +#error "Non multi-arch definition of DEPRECATED_EXTRACT_RETURN_VALUE" +#endif +#if GDB_MULTI_ARCH +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_EXTRACT_RETURN_VALUE) +#define DEPRECATED_EXTRACT_RETURN_VALUE(type, regbuf, valbuf) (gdbarch_deprecated_extract_return_value (current_gdbarch, type, regbuf, valbuf)) +#endif +#endif + +typedef void (gdbarch_deprecated_store_return_value_ftype) (struct type *type, char *valbuf); +extern void gdbarch_deprecated_store_return_value (struct gdbarch *gdbarch, struct type *type, char *valbuf); +extern void set_gdbarch_deprecated_store_return_value (struct gdbarch *gdbarch, gdbarch_deprecated_store_return_value_ftype *deprecated_store_return_value); +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_STORE_RETURN_VALUE) +#error "Non multi-arch definition of DEPRECATED_STORE_RETURN_VALUE" +#endif +#if GDB_MULTI_ARCH +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_STORE_RETURN_VALUE) +#define DEPRECATED_STORE_RETURN_VALUE(type, valbuf) (gdbarch_deprecated_store_return_value (current_gdbarch, type, valbuf)) #endif #endif diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh index 45cce8b..1ce71af 100755 --- a/gdb/gdbarch.sh +++ b/gdb/gdbarch.sh @@ -523,15 +523,18 @@ f:2:ADDRESS_TO_POINTER:void:address_to_pointer:struct type *type, void *buf, COR F:2:INTEGER_TO_ADDRESS:CORE_ADDR:integer_to_address:struct type *type, void *buf:type, buf # f:2:RETURN_VALUE_ON_STACK:int:return_value_on_stack:struct type *type:type:::generic_return_value_on_stack_not::0 -f:2:EXTRACT_RETURN_VALUE:void:extract_return_value:struct type *type, struct regcache *regcache, char *valbuf:type, regcache, valbuf:::legacy_extract_return_value::0 -f:2:DEPRECATED_EXTRACT_RETURN_VALUE:void:deprecated_extract_return_value:struct type *type, char *regbuf, char *valbuf:type, regbuf, valbuf::0:0 f:2:PUSH_ARGUMENTS:CORE_ADDR:push_arguments:int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr:nargs, args, sp, struct_return, struct_addr:::default_push_arguments::0 f:2:PUSH_DUMMY_FRAME:void:push_dummy_frame:void:-:::0 F:2:PUSH_RETURN_ADDRESS:CORE_ADDR:push_return_address:CORE_ADDR pc, CORE_ADDR sp:pc, sp:::0 f:2:POP_FRAME:void:pop_frame:void:-:::0 # f:2:STORE_STRUCT_RETURN:void:store_struct_return:CORE_ADDR addr, CORE_ADDR sp:addr, sp:::0 -f:2:STORE_RETURN_VALUE:void:store_return_value:struct type *type, char *valbuf:type, valbuf:::0 +# +f::EXTRACT_RETURN_VALUE:void:extract_return_value:struct type *type, struct regcache *regcache, void *valbuf:type, regcache, valbuf:::legacy_extract_return_value::0 +f::STORE_RETURN_VALUE:void:store_return_value:struct type *type, struct regcache *regcache, const void *valbuf:type, regcache, valbuf:::legacy_store_return_value::0 +f::DEPRECATED_EXTRACT_RETURN_VALUE:void:deprecated_extract_return_value:struct type *type, char *regbuf, char *valbuf:type, regbuf, valbuf +f::DEPRECATED_STORE_RETURN_VALUE:void:deprecated_store_return_value:struct type *type, char *valbuf:type, valbuf +# F:2:EXTRACT_STRUCT_VALUE_ADDRESS:CORE_ADDR:extract_struct_value_address:struct regcache *regcache:regcache:::0 F:2:DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS:CORE_ADDR:deprecated_extract_struct_value_address:char *regbuf:regbuf:::0 f:2:USE_STRUCT_CONVENTION:int:use_struct_convention:int gcc_p, struct type *value_type:gcc_p, value_type:::generic_use_struct_convention::0 diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index 233049d..8684fce 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -917,8 +917,9 @@ i386_store_struct_return (CORE_ADDR addr, CORE_ADDR sp) static void i386_extract_return_value (struct type *type, struct regcache *regcache, - char *valbuf) + void *dst) { + bfd_byte *valbuf = dst; int len = TYPE_LENGTH (type); char buf[I386_MAX_REGISTER_SIZE]; @@ -1532,7 +1533,7 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_push_return_address (gdbarch, i386_push_return_address); set_gdbarch_pop_frame (gdbarch, i386_pop_frame); set_gdbarch_store_struct_return (gdbarch, i386_store_struct_return); - set_gdbarch_store_return_value (gdbarch, i386_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, i386_store_return_value); set_gdbarch_extract_struct_value_address (gdbarch, i386_extract_struct_value_address); set_gdbarch_use_struct_convention (gdbarch, i386_use_struct_convention); diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c index 89009de..1874194 100644 --- a/gdb/ia64-tdep.c +++ b/gdb/ia64-tdep.c @@ -101,7 +101,6 @@ static gdbarch_deprecated_extract_struct_value_address_ftype ia64_extract_struct static gdbarch_use_struct_convention_ftype ia64_use_struct_convention; static gdbarch_frameless_function_invocation_ftype ia64_frameless_function_invocation; static gdbarch_init_extra_frame_info_ftype ia64_init_extra_frame_info; -static gdbarch_store_return_value_ftype ia64_store_return_value; static gdbarch_store_struct_return_ftype ia64_store_struct_return; static gdbarch_push_arguments_ftype ia64_push_arguments; static gdbarch_push_return_address_ftype ia64_push_return_address; @@ -2193,7 +2192,7 @@ ia64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_deprecated_extract_return_value (gdbarch, ia64_extract_return_value); set_gdbarch_store_struct_return (gdbarch, ia64_store_struct_return); - set_gdbarch_store_return_value (gdbarch, ia64_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, ia64_store_return_value); set_gdbarch_deprecated_extract_struct_value_address (gdbarch, ia64_extract_struct_value_address); set_gdbarch_memory_insert_breakpoint (gdbarch, ia64_memory_insert_breakpoint); diff --git a/gdb/m68hc11-tdep.c b/gdb/m68hc11-tdep.c index 1cd4921..aa1a226 100644 --- a/gdb/m68hc11-tdep.c +++ b/gdb/m68hc11-tdep.c @@ -1354,7 +1354,7 @@ m68hc11_gdbarch_init (struct gdbarch_info info, set_gdbarch_return_value_on_stack (gdbarch, m68hc11_return_value_on_stack); set_gdbarch_store_struct_return (gdbarch, m68hc11_store_struct_return); - set_gdbarch_store_return_value (gdbarch, m68hc11_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, m68hc11_store_return_value); set_gdbarch_deprecated_extract_struct_value_address (gdbarch, m68hc11_extract_struct_value_address); set_gdbarch_register_convertible (gdbarch, generic_register_convertible_not); @@ -1371,7 +1371,7 @@ m68hc11_gdbarch_init (struct gdbarch_info info, set_gdbarch_get_saved_register (gdbarch, generic_get_saved_register); set_gdbarch_store_struct_return (gdbarch, m68hc11_store_struct_return); - set_gdbarch_store_return_value (gdbarch, m68hc11_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, m68hc11_store_return_value); set_gdbarch_deprecated_extract_struct_value_address (gdbarch, m68hc11_extract_struct_value_address); set_gdbarch_use_struct_convention (gdbarch, m68hc11_use_struct_convention); diff --git a/gdb/m68k-tdep.c b/gdb/m68k-tdep.c index b00b0ee..31e8e66 100644 --- a/gdb/m68k-tdep.c +++ b/gdb/m68k-tdep.c @@ -1015,7 +1015,7 @@ m68k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_store_struct_return (gdbarch, m68k_store_struct_return); set_gdbarch_deprecated_extract_return_value (gdbarch, m68k_deprecated_extract_return_value); - set_gdbarch_store_return_value (gdbarch, m68k_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, m68k_store_return_value); set_gdbarch_frame_chain (gdbarch, m68k_frame_chain); set_gdbarch_frame_chain_valid (gdbarch, generic_func_frame_chain_valid); diff --git a/gdb/mcore-tdep.c b/gdb/mcore-tdep.c index d4cb61b..a53aaa0 100644 --- a/gdb/mcore-tdep.c +++ b/gdb/mcore-tdep.c @@ -1131,7 +1131,7 @@ mcore_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_frame_chain_valid (gdbarch, generic_func_frame_chain_valid); set_gdbarch_frame_init_saved_regs (gdbarch, mcore_frame_init_saved_regs); set_gdbarch_frame_saved_pc (gdbarch, mcore_frame_saved_pc); - set_gdbarch_store_return_value (gdbarch, mcore_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, mcore_store_return_value); set_gdbarch_deprecated_extract_return_value (gdbarch, mcore_extract_return_value); set_gdbarch_store_struct_return (gdbarch, mcore_store_struct_return); diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c index 0482190..58e1a8b 100644 --- a/gdb/mips-tdep.c +++ b/gdb/mips-tdep.c @@ -4780,7 +4780,7 @@ mips_o32_xfer_return_value (struct type *type, static void mips_o32_extract_return_value (struct type *type, struct regcache *regcache, - char *valbuf) + void *valbuf) { mips_o32_xfer_return_value (type, regcache, valbuf, NULL); } @@ -4888,7 +4888,7 @@ mips_n32n64_xfer_return_value (struct type *type, static void mips_n32n64_extract_return_value (struct type *type, struct regcache *regcache, - char *valbuf) + void *valbuf) { mips_n32n64_xfer_return_value (type, regcache, valbuf, NULL); } @@ -5726,7 +5726,7 @@ mips_gdbarch_init (struct gdbarch_info info, { case MIPS_ABI_O32: set_gdbarch_push_arguments (gdbarch, mips_o32_push_arguments); - set_gdbarch_store_return_value (gdbarch, mips_o32_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, mips_o32_store_return_value); set_gdbarch_extract_return_value (gdbarch, mips_o32_extract_return_value); tdep->mips_default_saved_regsize = 4; tdep->mips_default_stack_argsize = 4; @@ -5745,7 +5745,7 @@ mips_gdbarch_init (struct gdbarch_info info, break; case MIPS_ABI_O64: set_gdbarch_push_arguments (gdbarch, mips_o64_push_arguments); - set_gdbarch_store_return_value (gdbarch, mips_o64_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, mips_o64_store_return_value); set_gdbarch_deprecated_extract_return_value (gdbarch, mips_o64_extract_return_value); tdep->mips_default_saved_regsize = 8; tdep->mips_default_stack_argsize = 8; @@ -5764,7 +5764,7 @@ mips_gdbarch_init (struct gdbarch_info info, break; case MIPS_ABI_EABI32: set_gdbarch_push_arguments (gdbarch, mips_eabi_push_arguments); - set_gdbarch_store_return_value (gdbarch, mips_eabi_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, mips_eabi_store_return_value); set_gdbarch_deprecated_extract_return_value (gdbarch, mips_eabi_extract_return_value); tdep->mips_default_saved_regsize = 4; tdep->mips_default_stack_argsize = 4; @@ -5783,7 +5783,7 @@ mips_gdbarch_init (struct gdbarch_info info, break; case MIPS_ABI_EABI64: set_gdbarch_push_arguments (gdbarch, mips_eabi_push_arguments); - set_gdbarch_store_return_value (gdbarch, mips_eabi_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, mips_eabi_store_return_value); set_gdbarch_deprecated_extract_return_value (gdbarch, mips_eabi_extract_return_value); tdep->mips_default_saved_regsize = 8; tdep->mips_default_stack_argsize = 8; @@ -5802,7 +5802,7 @@ mips_gdbarch_init (struct gdbarch_info info, break; case MIPS_ABI_N32: set_gdbarch_push_arguments (gdbarch, mips_n32n64_push_arguments); - set_gdbarch_store_return_value (gdbarch, mips_n32n64_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, mips_n32n64_store_return_value); set_gdbarch_extract_return_value (gdbarch, mips_n32n64_extract_return_value); tdep->mips_default_saved_regsize = 8; tdep->mips_default_stack_argsize = 8; @@ -5833,7 +5833,7 @@ mips_gdbarch_init (struct gdbarch_info info, break; case MIPS_ABI_N64: set_gdbarch_push_arguments (gdbarch, mips_n32n64_push_arguments); - set_gdbarch_store_return_value (gdbarch, mips_n32n64_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, mips_n32n64_store_return_value); set_gdbarch_extract_return_value (gdbarch, mips_n32n64_extract_return_value); tdep->mips_default_saved_regsize = 8; tdep->mips_default_stack_argsize = 8; diff --git a/gdb/mn10300-tdep.c b/gdb/mn10300-tdep.c index 18bea39..6e7bada 100644 --- a/gdb/mn10300-tdep.c +++ b/gdb/mn10300-tdep.c @@ -1173,7 +1173,7 @@ mn10300_gdbarch_init (struct gdbarch_info info, set_gdbarch_deprecated_extract_return_value (gdbarch, mn10300_extract_return_value); set_gdbarch_deprecated_extract_struct_value_address (gdbarch, mn10300_extract_struct_value_address); - set_gdbarch_store_return_value (gdbarch, mn10300_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, mn10300_store_return_value); set_gdbarch_store_struct_return (gdbarch, mn10300_store_struct_return); set_gdbarch_pop_frame (gdbarch, mn10300_pop_frame); set_gdbarch_skip_prologue (gdbarch, mn10300_skip_prologue); diff --git a/gdb/ns32k-tdep.c b/gdb/ns32k-tdep.c index 01e89d4..58c2e13 100644 --- a/gdb/ns32k-tdep.c +++ b/gdb/ns32k-tdep.c @@ -574,7 +574,7 @@ ns32k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Return value info */ set_gdbarch_store_struct_return (gdbarch, ns32k_store_struct_return); set_gdbarch_deprecated_extract_return_value (gdbarch, ns32k_extract_return_value); - set_gdbarch_store_return_value (gdbarch, ns32k_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, ns32k_store_return_value); set_gdbarch_deprecated_extract_struct_value_address (gdbarch, ns32k_extract_struct_value_address); diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index 766d034..c73f92d 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -2888,7 +2888,7 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) else set_gdbarch_push_arguments (gdbarch, rs6000_push_arguments); - set_gdbarch_store_struct_return (gdbarch, rs6000_store_struct_return); + set_gdbarch_deprecated_store_return_value (gdbarch, rs6000_store_return_value); set_gdbarch_deprecated_extract_struct_value_address (gdbarch, rs6000_extract_struct_value_address); set_gdbarch_pop_frame (gdbarch, rs6000_pop_frame); diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c index 0a0086f..49a15a2 100644 --- a/gdb/s390-tdep.c +++ b/gdb/s390-tdep.c @@ -1774,7 +1774,7 @@ s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown); set_gdbarch_store_struct_return (gdbarch, s390_store_struct_return); set_gdbarch_deprecated_extract_return_value (gdbarch, s390_extract_return_value); - set_gdbarch_store_return_value (gdbarch, s390_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, s390_store_return_value); /* Amount PC must be decremented by after a breakpoint. This is often the number of bytes in BREAKPOINT but not always. */ diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c index 67ebbf3..b133b03 100644 --- a/gdb/sh-tdep.c +++ b/gdb/sh-tdep.c @@ -4199,7 +4199,7 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) struct gdbarch *gdbarch; struct gdbarch_tdep *tdep; gdbarch_register_name_ftype *sh_register_name; - gdbarch_store_return_value_ftype *sh_store_return_value; + gdbarch_deprecated_store_return_value_ftype *sh_store_return_value; gdbarch_register_virtual_type_ftype *sh_register_virtual_type; enum gdb_osabi osabi = GDB_OSABI_UNKNOWN; @@ -4565,7 +4565,7 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame); set_gdbarch_push_return_address (gdbarch, sh_push_return_address); - set_gdbarch_store_return_value (gdbarch, sh_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, sh_store_return_value); set_gdbarch_skip_prologue (gdbarch, sh_skip_prologue); set_gdbarch_inner_than (gdbarch, core_addr_lessthan); set_gdbarch_decr_pc_after_break (gdbarch, 0); diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c index 12dbaaa..033cc81 100644 --- a/gdb/sparc-tdep.c +++ b/gdb/sparc-tdep.c @@ -3220,7 +3220,7 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_num_regs (gdbarch, 72); set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4); set_gdbarch_register_name (gdbarch, sparc32_register_name); - set_gdbarch_store_return_value (gdbarch, sparc_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, sparc_store_return_value); tdep->has_fpu = 1; /* (all but sparclet and sparclite) */ tdep->fp_register_bytes = 32 * 4; tdep->print_insn_mach = bfd_mach_sparc; @@ -3231,7 +3231,7 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_num_regs (gdbarch, 32 + 32 + 8 + 8 + 8); set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4 + 8*4 + 8*4); set_gdbarch_register_name (gdbarch, sparclet_register_name); - set_gdbarch_store_return_value (gdbarch, sparclet_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, sparclet_store_return_value); tdep->has_fpu = 0; /* (all but sparclet and sparclite) */ tdep->fp_register_bytes = 0; tdep->print_insn_mach = bfd_mach_sparc_sparclet; @@ -3242,7 +3242,7 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_num_regs (gdbarch, 80); set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4 + 8*4); set_gdbarch_register_name (gdbarch, sparclite_register_name); - set_gdbarch_store_return_value (gdbarch, sparc_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, sparc_store_return_value); tdep->has_fpu = 0; /* (all but sparclet and sparclite) */ tdep->fp_register_bytes = 0; tdep->print_insn_mach = bfd_mach_sparc_sparclite; @@ -3253,7 +3253,7 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_num_regs (gdbarch, 72); set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4); set_gdbarch_register_name (gdbarch, sparc32_register_name); - set_gdbarch_store_return_value (gdbarch, sparc_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, sparc_store_return_value); tdep->print_insn_mach = bfd_mach_sparc; tdep->fp_register_bytes = 32 * 4; tdep->has_fpu = 1; /* (all but sparclet and sparclite) */ @@ -3264,7 +3264,7 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_num_regs (gdbarch, 72); set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4); set_gdbarch_register_name (gdbarch, sparc32_register_name); - set_gdbarch_store_return_value (gdbarch, sparc_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, sparc_store_return_value); tdep->has_fpu = 1; /* (all but sparclet and sparclite) */ tdep->fp_register_bytes = 32 * 4; tdep->print_insn_mach = bfd_mach_sparc; @@ -3275,7 +3275,7 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_num_regs (gdbarch, 80); set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4 + 8*4); set_gdbarch_register_name (gdbarch, sparclite_register_name); - set_gdbarch_store_return_value (gdbarch, sparc_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, sparc_store_return_value); tdep->has_fpu = 0; /* (all but sparclet and sparclite) */ tdep->fp_register_bytes = 0; tdep->print_insn_mach = bfd_mach_sparc_sparclite; @@ -3286,7 +3286,7 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_num_regs (gdbarch, 125); set_gdbarch_register_bytes (gdbarch, 32*8 + 32*8 + 45*8); set_gdbarch_register_name (gdbarch, sparc64_register_name); - set_gdbarch_store_return_value (gdbarch, sparc_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, sparc_store_return_value); tdep->has_fpu = 1; /* (all but sparclet and sparclite) */ tdep->fp_register_bytes = 64 * 4; tdep->print_insn_mach = bfd_mach_sparc_v9a; @@ -3297,7 +3297,7 @@ sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_num_regs (gdbarch, 125); set_gdbarch_register_bytes (gdbarch, 32*8 + 32*8 + 45*8); set_gdbarch_register_name (gdbarch, sparc64_register_name); - set_gdbarch_store_return_value (gdbarch, sparc_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, sparc_store_return_value); tdep->has_fpu = 1; /* (all but sparclet and sparclite) */ tdep->fp_register_bytes = 64 * 4; tdep->print_insn_mach = bfd_mach_sparc_v9a; diff --git a/gdb/v850-tdep.c b/gdb/v850-tdep.c index 50980fa..3752dce 100644 --- a/gdb/v850-tdep.c +++ b/gdb/v850-tdep.c @@ -1273,7 +1273,7 @@ v850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_push_arguments (gdbarch, v850_push_arguments); set_gdbarch_pop_frame (gdbarch, v850_pop_frame); set_gdbarch_store_struct_return (gdbarch, v850_store_struct_return); - set_gdbarch_store_return_value (gdbarch, v850_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, v850_store_return_value); set_gdbarch_deprecated_extract_struct_value_address (gdbarch, v850_extract_struct_value_address); set_gdbarch_use_struct_convention (gdbarch, v850_use_struct_convention); set_gdbarch_call_dummy_location (gdbarch, AT_ENTRY_POINT); diff --git a/gdb/values.c b/gdb/values.c index 6e07c90..a0c9794 100644 --- a/gdb/values.c +++ b/gdb/values.c @@ -1336,7 +1336,7 @@ set_return_value (struct value *val) || code == TYPE_CODE_UNION) /* FIXME, implement struct return. */ error ("GDB does not support specifying a struct or union return value."); - STORE_RETURN_VALUE (type, VALUE_CONTENTS (val)); + STORE_RETURN_VALUE (type, current_regcache, VALUE_CONTENTS (val)); } void diff --git a/gdb/vax-tdep.c b/gdb/vax-tdep.c index c0a650c..709ef38 100644 --- a/gdb/vax-tdep.c +++ b/gdb/vax-tdep.c @@ -48,7 +48,6 @@ static gdbarch_frame_init_saved_regs_ftype vax_frame_init_saved_regs; static gdbarch_store_struct_return_ftype vax_store_struct_return; static gdbarch_deprecated_extract_return_value_ftype vax_extract_return_value; -static gdbarch_store_return_value_ftype vax_store_return_value; static gdbarch_deprecated_extract_struct_value_address_ftype vax_extract_struct_value_address; @@ -650,7 +649,7 @@ vax_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Return value info */ set_gdbarch_store_struct_return (gdbarch, vax_store_struct_return); set_gdbarch_deprecated_extract_return_value (gdbarch, vax_extract_return_value); - set_gdbarch_store_return_value (gdbarch, vax_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, vax_store_return_value); set_gdbarch_deprecated_extract_struct_value_address (gdbarch, vax_extract_struct_value_address); /* Call dummy info */ diff --git a/gdb/x86-64-tdep.c b/gdb/x86-64-tdep.c index 37d8fc8..a47f5e7 100644 --- a/gdb/x86-64-tdep.c +++ b/gdb/x86-64-tdep.c @@ -1096,7 +1096,7 @@ x86_64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Write into the appropriate registers a function return value stored in VALBUF of type TYPE, given in virtual format. */ - set_gdbarch_store_return_value (gdbarch, x86_64_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, x86_64_store_return_value); /* Offset from address of function to start of its code. */ diff --git a/gdb/xstormy16-tdep.c b/gdb/xstormy16-tdep.c index 8e283b8..d358313 100644 --- a/gdb/xstormy16-tdep.c +++ b/gdb/xstormy16-tdep.c @@ -1090,7 +1090,7 @@ xstormy16_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_push_arguments (gdbarch, xstormy16_push_arguments); set_gdbarch_pop_frame (gdbarch, xstormy16_pop_frame); set_gdbarch_store_struct_return (gdbarch, xstormy16_store_struct_return); - set_gdbarch_store_return_value (gdbarch, xstormy16_store_return_value); + set_gdbarch_deprecated_store_return_value (gdbarch, xstormy16_store_return_value); set_gdbarch_deprecated_extract_struct_value_address (gdbarch, xstormy16_extract_struct_value_address); set_gdbarch_use_struct_convention (gdbarch, xstormy16_use_struct_convention); |