aboutsummaryrefslogtreecommitdiff
path: root/gdb/config
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@gnu.org>2001-03-26 12:11:14 +0000
committerMark Kettenis <kettenis@gnu.org>2001-03-26 12:11:14 +0000
commit22f8ba577413fda5817e1eac7605a56c5cbfccdb (patch)
treec6f0da847979140fa4f9a304ed3d339af504c75c /gdb/config
parente9c75b65b11ff47a78c1c46c4a2a482f4d4b42fd (diff)
downloadfsf-binutils-gdb-22f8ba577413fda5817e1eac7605a56c5cbfccdb.zip
fsf-binutils-gdb-22f8ba577413fda5817e1eac7605a56c5cbfccdb.tar.gz
fsf-binutils-gdb-22f8ba577413fda5817e1eac7605a56c5cbfccdb.tar.bz2
* i386-tdep.c (i386_push_arguments, i386_store_struct_return): New
functions. * config/i386/tm-i386.h (PUSH_ARGUMENTS): New macro. (STORE_STRUCT_RETURN): Redefine in terms of i386_store_struct_return. (i386_push_arguments, i386_store_struct_return): New prototypes. * config/i386/tm-i386v.h (STORE_STRUCT_RETURN): Remove. It's definition was identical to the definition in "i386/tm-i386.h" so the new definition should suffice too.
Diffstat (limited to 'gdb/config')
-rw-r--r--gdb/config/i386/tm-i386.h18
-rw-r--r--gdb/config/i386/tm-i386v.h7
2 files changed, 11 insertions, 14 deletions
diff --git a/gdb/config/i386/tm-i386.h b/gdb/config/i386/tm-i386.h
index e871499..9417b77 100644
--- a/gdb/config/i386/tm-i386.h
+++ b/gdb/config/i386/tm-i386.h
@@ -279,16 +279,20 @@ extern void i386_register_convert_to_raw (struct type *type, int regnum,
extern void i387_float_info (void);
#define FLOAT_INFO { i387_float_info (); }
#endif
-
+
+#define PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) \
+ i386_push_arguments ((nargs), (args), (sp), (struct_return), (struct_addr))
+extern CORE_ADDR i386_push_arguments (int nargs, struct value **args,
+ CORE_ADDR sp, int struct_return,
+ CORE_ADDR struct_addr);
+
/* Store the address of the place in which to copy the structure the
- subroutine will return. This is called from call_function. */
+ subroutine will return. This is called from call_function. */
-#define STORE_STRUCT_RETURN(ADDR, SP) \
- { char buf[REGISTER_SIZE]; \
- (SP) -= sizeof (ADDR); \
- store_address (buf, sizeof (ADDR), ADDR); \
- write_memory ((SP), buf, sizeof (ADDR)); }
+#define STORE_STRUCT_RETURN(addr, sp) \
+ i386_store_struct_return ((addr), (sp))
+extern void i386_store_struct_return (CORE_ADDR addr, CORE_ADDR sp);
/* Extract from an array REGBUF containing the (raw) register state
a function return value of type TYPE, and copy that, in virtual format,
diff --git a/gdb/config/i386/tm-i386v.h b/gdb/config/i386/tm-i386v.h
index a60dd5a..c451bf8 100644
--- a/gdb/config/i386/tm-i386v.h
+++ b/gdb/config/i386/tm-i386v.h
@@ -34,13 +34,6 @@
#undef START_INFERIOR_TRAPS_EXPECTED
#define START_INFERIOR_TRAPS_EXPECTED 4
-#undef STORE_STRUCT_RETURN
-#define STORE_STRUCT_RETURN(ADDR, SP) \
- { char buf[REGISTER_SIZE]; \
- (SP) -= sizeof (ADDR); \
- store_address (buf, sizeof (ADDR), ADDR); \
- write_memory ((SP), buf, sizeof (ADDR)); }
-
/* Extract from an array REGBUF containing the (raw) register state
a function return value of type TYPE, and copy that, in virtual format,
into VALBUF. */