This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[commit] Eliminate legacy_push_arguments
- From: Andrew Cagney <cagney at gnu dot org>
- To: gdb-patches at sources dot redhat dot com
- Date: Thu, 10 Jun 2004 13:40:42 -0400
- Subject: [commit] Eliminate legacy_push_arguments
Hello,
This eliminates the function legacy_push_arguments. For the ns32k, the
only thing relying on it, I did a sideways step setting
deprecated_push_arguments.
committed,
Andrew
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.
Index: infcall.c
===================================================================
RCS file: /cvs/src/src/gdb/infcall.c,v
retrieving revision 1.48
diff -p -u -r1.48 infcall.c
--- infcall.c 7 Jun 2004 02:02:50 -0000 1.48
+++ infcall.c 10 Jun 2004 17:37:43 -0000
@@ -669,7 +669,7 @@ You must use a pointer to function type
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 */
Index: ns32k-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/ns32k-tdep.c,v
retrieving revision 1.75
diff -p -u -r1.75 ns32k-tdep.c
--- ns32k-tdep.c 18 May 2004 21:20:28 -0000 1.75
+++ ns32k-tdep.c 10 Jun 2004 17:37:43 -0000
@@ -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
/* 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);
Index: valops.c
===================================================================
RCS file: /cvs/src/src/gdb/valops.c,v
retrieving revision 1.126
diff -p -u -r1.126 valops.c
--- valops.c 5 May 2004 15:42:53 -0000 1.126
+++ valops.c 10 Jun 2004 17:37:43 -0000
@@ -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,
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.
Index: value.h
===================================================================
RCS file: /cvs/src/src/gdb/value.h,v
retrieving revision 1.54
diff -p -u -r1.54 value.h
--- value.h 23 Oct 2003 22:36:14 -0000 1.54
+++ value.h 10 Jun 2004 17:37:43 -0000
@@ -560,10 +560,6 @@ extern struct value *find_function_in_in
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) */