2004-06-10 Andrew Cagney <cagney@gnu.org>

* ns32k-tdep.c (ns32k_push_arguments): New function.
	(ns32k_gdbarch_init): Set deprecated_push_arguments.
	* infcall.c (call_function_by_hand): Call error instead of
	legacy_push_arguments.
	* value.h (legacy_push_arguments): Delete declaration.
	* valops.c (legacy_push_arguments): Delete function.
	(value_push): Delete function.
This commit is contained in:
Andrew Cagney 2004-06-10 17:39:28 +00:00
parent fea251526d
commit 9a1dd1ad41
5 changed files with 40 additions and 50 deletions

View File

@ -1,3 +1,13 @@
2004-06-10 Andrew Cagney <cagney@gnu.org>
* ns32k-tdep.c (ns32k_push_arguments): New function.
(ns32k_gdbarch_init): Set deprecated_push_arguments.
* infcall.c (call_function_by_hand): Call error instead of
legacy_push_arguments.
* value.h (legacy_push_arguments): Delete declaration.
* valops.c (legacy_push_arguments): Delete function.
(value_push): Delete function.
2004-06-10 Brian Ford <ford@vss.fsi.com>
* coffread.c (coff_symfile_read): Prevent mixed debugging formats

View File

@ -669,7 +669,7 @@ You must use a pointer to function type variable. Command ignored.", arg_name);
sp = DEPRECATED_PUSH_ARGUMENTS (nargs, args, sp, struct_return,
struct_addr);
else
sp = legacy_push_arguments (nargs, args, sp, struct_return, struct_addr);
error ("This target does not support function calls");
if (DEPRECATED_PUSH_RETURN_ADDRESS_P ())
/* for targets that use no CALL_DUMMY */

View File

@ -418,6 +418,34 @@ ns32k_pop_frame (void)
write_register (SP_REGNUM, fp + 8);
flush_cached_frames ();
}
static CORE_ADDR
ns32k_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
int struct_return, CORE_ADDR struct_addr)
{
/* ASSERT ( !struct_return); */
int i;
for (i = nargs - 1; i >= 0; i--)
{
struct value *arg = args[i];
int len = TYPE_LENGTH (VALUE_ENCLOSING_TYPE (arg));
int container_len = len;
int offset;
/* Are we going to put it at the high or low end of the
container? */
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
offset = container_len - len;
else
offset = 0;
/* Stack grows downward. */
sp -= container_len;
write_memory (sp + offset, VALUE_CONTENTS_ALL (arg), len);
}
return sp;
}
static void
ns32k_store_struct_return (CORE_ADDR addr, CORE_ADDR sp)
@ -524,6 +552,7 @@ ns32k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
/* Call dummy info */
set_gdbarch_deprecated_pop_frame (gdbarch, ns32k_pop_frame);
set_gdbarch_call_dummy_location (gdbarch, ON_STACK);
set_gdbarch_deprecated_push_arguments (gdbarch, ns32k_push_arguments);
/* Breakpoint info */
set_gdbarch_breakpoint_from_pc (gdbarch, ns32k_breakpoint_from_pc);

View File

@ -50,8 +50,6 @@ extern int overload_debug;
static int typecmp (int staticp, int varargs, int nargs,
struct field t1[], struct value *t2[]);
static CORE_ADDR value_push (CORE_ADDR, struct value *);
static struct value *search_struct_field (char *, struct value *, int,
struct type *, int);
@ -1005,49 +1003,6 @@ push_bytes (CORE_ADDR sp, char *buffer, int len)
return sp;
}
/* Push onto the stack the specified value VALUE. Pad it correctly for
it to be an argument to a function. */
static CORE_ADDR
value_push (CORE_ADDR sp, struct value *arg)
{
int len = TYPE_LENGTH (VALUE_ENCLOSING_TYPE (arg));
int container_len = len;
int offset;
/* Are we going to put it at the high or low end of the container? */
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
offset = container_len - len;
else
offset = 0;
if (INNER_THAN (1, 2))
{
/* stack grows downward */
sp -= container_len;
write_memory (sp + offset, VALUE_CONTENTS_ALL (arg), len);
}
else
{
/* stack grows upward */
write_memory (sp + offset, VALUE_CONTENTS_ALL (arg), len);
sp += container_len;
}
return sp;
}
CORE_ADDR
legacy_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
int struct_return, CORE_ADDR struct_addr)
{
/* ASSERT ( !struct_return); */
int i;
for (i = nargs - 1; i >= 0; i--)
sp = value_push (sp, args[i]);
return sp;
}
/* Create a value for an array by allocating space in the inferior, copying
the data into that space, and then setting up an array value.

View File

@ -560,10 +560,6 @@ extern struct value *find_function_in_inferior (const char *);
extern struct value *value_allocate_space_in_inferior (int);
extern CORE_ADDR legacy_push_arguments (int nargs, struct value ** args,
CORE_ADDR sp, int struct_return,
CORE_ADDR struct_addr);
extern struct value *value_of_local (const char *name, int complain);
#endif /* !defined (VALUE_H) */