* infcall.c (call_function_by_hand): Remove code handling

deprecated_push_arguments.  Bail out early if push_dummy_call
isn't available.
* gdbarch.sh (deprecated_push_arguments): Delete.  Adjust a few
comments accordingly.
* gdbarch.h, gdbarch.c: Regenerate.
This commit is contained in:
Mark Kettenis 2005-09-02 19:02:46 +00:00
parent c66a62d36f
commit a86c5fc9d8
5 changed files with 19 additions and 93 deletions

View File

@ -1,3 +1,12 @@
2005-09-02 Mark Kettenis <kettenis@gnu.org>
* infcall.c (call_function_by_hand): Remove code handling
deprecated_push_arguments. Bail out early if push_dummy_call
isn't available.
* gdbarch.sh (deprecated_push_arguments): Delete. Adjust a few
comments accordingly.
* gdbarch.h, gdbarch.c: Regenerate.
2005-09-01 Paul Gilliam <pgilliam@us.ibm.com>
* ppc-tdep.h (struct gdbarch_tdep): Better explanation of using

View File

@ -167,7 +167,6 @@ struct gdbarch
gdbarch_unwind_dummy_id_ftype *unwind_dummy_id;
int deprecated_fp_regnum;
gdbarch_push_dummy_call_ftype *push_dummy_call;
gdbarch_deprecated_push_arguments_ftype *deprecated_push_arguments;
int deprecated_register_size;
int call_dummy_location;
gdbarch_push_dummy_code_ftype *push_dummy_code;
@ -294,7 +293,6 @@ struct gdbarch startup_gdbarch =
0, /* unwind_dummy_id */
-1, /* deprecated_fp_regnum */
0, /* push_dummy_call */
0, /* deprecated_push_arguments */
0, /* deprecated_register_size */
0, /* call_dummy_location */
0, /* push_dummy_code */
@ -552,7 +550,6 @@ verify_gdbarch (struct gdbarch *current_gdbarch)
/* Skip verify of unwind_dummy_id, has predicate */
/* Skip verify of deprecated_fp_regnum, invalid_p == 0 */
/* Skip verify of push_dummy_call, has predicate */
/* Skip verify of deprecated_push_arguments, has predicate */
/* Skip verify of call_dummy_location, invalid_p == 0 */
/* Skip verify of push_dummy_code, has predicate */
/* Skip verify of print_registers_info, invalid_p == 0 */
@ -880,24 +877,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
fprintf_unfiltered (file,
"gdbarch_dump: deprecated_function_start_offset = 0x%s\n",
paddr_nz (current_gdbarch->deprecated_function_start_offset));
#ifdef DEPRECATED_PUSH_ARGUMENTS_P
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"DEPRECATED_PUSH_ARGUMENTS_P()",
XSTRING (DEPRECATED_PUSH_ARGUMENTS_P ()));
#endif
fprintf_unfiltered (file,
"gdbarch_dump: gdbarch_deprecated_push_arguments_p() = %d\n",
gdbarch_deprecated_push_arguments_p (current_gdbarch));
#ifdef DEPRECATED_PUSH_ARGUMENTS
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"DEPRECATED_PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr)",
XSTRING (DEPRECATED_PUSH_ARGUMENTS (nargs, args, sp, struct_return, struct_addr)));
#endif
fprintf_unfiltered (file,
"gdbarch_dump: deprecated_push_arguments = <0x%lx>\n",
(long) current_gdbarch->deprecated_push_arguments);
#ifdef DEPRECATED_REG_STRUCT_HAS_ADDR_P
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
@ -2375,30 +2354,6 @@ set_gdbarch_push_dummy_call (struct gdbarch *gdbarch,
gdbarch->push_dummy_call = push_dummy_call;
}
int
gdbarch_deprecated_push_arguments_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->deprecated_push_arguments != NULL;
}
CORE_ADDR
gdbarch_deprecated_push_arguments (struct gdbarch *gdbarch, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->deprecated_push_arguments != NULL);
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_push_arguments called\n");
return gdbarch->deprecated_push_arguments (nargs, args, sp, struct_return, struct_addr);
}
void
set_gdbarch_deprecated_push_arguments (struct gdbarch *gdbarch,
gdbarch_deprecated_push_arguments_ftype deprecated_push_arguments)
{
gdbarch->deprecated_push_arguments = deprecated_push_arguments;
}
int
gdbarch_deprecated_register_size (struct gdbarch *gdbarch)
{

View File

@ -525,8 +525,7 @@ extern void set_gdbarch_deprecated_fp_regnum (struct gdbarch *gdbarch, int depre
#define DEPRECATED_FP_REGNUM (gdbarch_deprecated_fp_regnum (current_gdbarch))
#endif
/* See gdbint.texinfo. See infcall.c. New, all singing all dancing,
replacement for DEPRECATED_PUSH_ARGUMENTS. */
/* See gdbint.texinfo. See infcall.c. */
extern int gdbarch_push_dummy_call_p (struct gdbarch *gdbarch);
@ -534,33 +533,6 @@ typedef CORE_ADDR (gdbarch_push_dummy_call_ftype) (struct gdbarch *gdbarch, stru
extern CORE_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);
extern void set_gdbarch_push_dummy_call (struct gdbarch *gdbarch, gdbarch_push_dummy_call_ftype *push_dummy_call);
/* PUSH_DUMMY_CALL is a direct replacement for DEPRECATED_PUSH_ARGUMENTS. */
#if defined (DEPRECATED_PUSH_ARGUMENTS)
/* Legacy for systems yet to multi-arch DEPRECATED_PUSH_ARGUMENTS */
#if !defined (DEPRECATED_PUSH_ARGUMENTS_P)
#define DEPRECATED_PUSH_ARGUMENTS_P() (1)
#endif
#endif
extern int gdbarch_deprecated_push_arguments_p (struct gdbarch *gdbarch);
#if !defined (GDB_TM_FILE) && defined (DEPRECATED_PUSH_ARGUMENTS_P)
#error "Non multi-arch definition of DEPRECATED_PUSH_ARGUMENTS"
#endif
#if !defined (DEPRECATED_PUSH_ARGUMENTS_P)
#define DEPRECATED_PUSH_ARGUMENTS_P() (gdbarch_deprecated_push_arguments_p (current_gdbarch))
#endif
typedef CORE_ADDR (gdbarch_deprecated_push_arguments_ftype) (int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr);
extern CORE_ADDR gdbarch_deprecated_push_arguments (struct gdbarch *gdbarch, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr);
extern void set_gdbarch_deprecated_push_arguments (struct gdbarch *gdbarch, gdbarch_deprecated_push_arguments_ftype *deprecated_push_arguments);
#if !defined (GDB_TM_FILE) && defined (DEPRECATED_PUSH_ARGUMENTS)
#error "Non multi-arch definition of DEPRECATED_PUSH_ARGUMENTS"
#endif
#if !defined (DEPRECATED_PUSH_ARGUMENTS)
#define DEPRECATED_PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) (gdbarch_deprecated_push_arguments (current_gdbarch, nargs, args, sp, struct_return, struct_addr))
#endif
/* DEPRECATED_REGISTER_SIZE can be deleted. */
extern int gdbarch_deprecated_register_size (struct gdbarch *gdbarch);
@ -753,7 +725,7 @@ typedef CORE_ADDR (gdbarch_integer_to_address_ftype) (struct gdbarch *gdbarch, s
extern CORE_ADDR gdbarch_integer_to_address (struct gdbarch *gdbarch, struct type *type, const gdb_byte *buf);
extern void set_gdbarch_integer_to_address (struct gdbarch *gdbarch, gdbarch_integer_to_address_ftype *integer_to_address);
/* NOTE: cagney/2003-03-24: Replaced by PUSH_ARGUMENTS. */
/* NOTE: kettenis/2005-09-01: Replaced by PUSH_DUMMY_CALL. */
#if defined (DEPRECATED_STORE_STRUCT_RETURN)
/* Legacy for systems yet to multi-arch DEPRECATED_STORE_STRUCT_RETURN */

View File

@ -469,11 +469,8 @@ M::struct frame_id:unwind_dummy_id:struct frame_info *info:info
# DEPRECATED_FP_REGNUM.
v:=:int:deprecated_fp_regnum:::-1:-1::0
# See gdbint.texinfo. See infcall.c. New, all singing all dancing,
# replacement for DEPRECATED_PUSH_ARGUMENTS.
# See gdbint.texinfo. See infcall.c.
M::CORE_ADDR:push_dummy_call: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:function, regcache, bp_addr, nargs, args, sp, struct_return, struct_addr
# PUSH_DUMMY_CALL is a direct replacement for DEPRECATED_PUSH_ARGUMENTS.
F:=:CORE_ADDR:deprecated_push_arguments:int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr:nargs, args, sp, struct_return, struct_addr
# DEPRECATED_REGISTER_SIZE can be deleted.
v:=:int:deprecated_register_size
v:=:int:call_dummy_location::::AT_ENTRY_POINT::0
@ -501,7 +498,7 @@ f:=:CORE_ADDR:pointer_to_address:struct type *type, const gdb_byte *buf:type, bu
f:=:void:address_to_pointer:struct type *type, gdb_byte *buf, CORE_ADDR addr:type, buf, addr::unsigned_address_to_pointer::0
M::CORE_ADDR:integer_to_address:struct type *type, const gdb_byte *buf:type, buf
#
# NOTE: cagney/2003-03-24: Replaced by PUSH_ARGUMENTS.
# NOTE: kettenis/2005-09-01: Replaced by PUSH_DUMMY_CALL.
F:=:void:deprecated_store_struct_return:CORE_ADDR addr, CORE_ADDR sp:addr, sp
# It has been suggested that this, well actually its predecessor,

View File

@ -333,6 +333,9 @@ call_function_by_hand (struct value *function, int nargs, struct value **args)
if (!target_has_execution)
noprocess ();
if (!gdbarch_push_dummy_call_p (current_gdbarch))
error (_("This target does not support function calls"));
/* Create a cleanup chain that contains the retbuf (buffer
containing the register values). This chain is create BEFORE the
inf_status chain so that the inferior status can cleaned up
@ -653,19 +656,9 @@ You must use a pointer to function type variable. Command ignored."), arg_name);
/* Create the dummy stack frame. Pass in the call dummy address as,
presumably, the ABI code knows where, in the call dummy, the
return address should be pointed. */
if (gdbarch_push_dummy_call_p (current_gdbarch))
/* When there is no push_dummy_call method, should this code
simply error out. That would the implementation of this method
for all ABIs (which is probably a good thing). */
sp = gdbarch_push_dummy_call (current_gdbarch, function, current_regcache,
bp_addr, nargs, args, sp, struct_return,
struct_addr);
else if (DEPRECATED_PUSH_ARGUMENTS_P ())
/* Keep old targets working. */
sp = DEPRECATED_PUSH_ARGUMENTS (nargs, args, sp, struct_return,
struct_addr);
else
error (_("This target does not support function calls"));
sp = gdbarch_push_dummy_call (current_gdbarch, function, current_regcache,
bp_addr, nargs, args, sp, struct_return,
struct_addr);
/* Set up a frame ID for the dummy frame so we can pass it to
set_momentary_breakpoint. We need to give the breakpoint a frame