mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-02-17 13:10:12 +08:00
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:
parent
fea251526d
commit
9a1dd1ad41
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
45
gdb/valops.c
45
gdb/valops.c
@ -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.
|
||||
|
||||
|
@ -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) */
|
||||
|
Loading…
Reference in New Issue
Block a user