* x86-64-tdep.c (amd64_push_arguments): Add struct_return

argument.  Use it to reserve a register if necessary.
(amd64_push_dummy_call): Pass STRUCT_RETURN in call to
amd64_push_arguments.
This commit is contained in:
Mark Kettenis 2004-01-10 17:48:15 +00:00
parent 562c50c218
commit 6470d25069
2 changed files with 11 additions and 2 deletions

View File

@ -1,5 +1,10 @@
2004-01-10 Mark Kettenis <kettenis@gnu.org>
* x86-64-tdep.c (amd64_push_arguments): Add struct_return
argument. Use it to reserve a register if necessary.
(amd64_push_dummy_call): Pass STRUCT_RETURN in call to
amd64_push_arguments.
* x86-64-tdep.c (amd64_classify_aggregate): Ignore static fields.
* x86-64-tdep.c (amd64_register_info): Add %cs and %ss. Adjust

View File

@ -481,7 +481,7 @@ amd64_return_value (struct gdbarch *gdbarch, struct type *type,
static CORE_ADDR
amd64_push_arguments (struct regcache *regcache, int nargs,
struct value **args, CORE_ADDR sp)
struct value **args, CORE_ADDR sp, int struct_return)
{
static int integer_regnum[] =
{
@ -505,6 +505,10 @@ amd64_push_arguments (struct regcache *regcache, int nargs,
int sse_reg = 0;
int i;
/* Reserve a register for the "hidden" argument. */
if (struct_return)
integer_reg++;
for (i = 0; i < nargs; i++)
{
struct type *type = VALUE_TYPE (args[i]);
@ -613,7 +617,7 @@ amd64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
char buf[8];
/* Pass arguments. */
sp = amd64_push_arguments (regcache, nargs, args, sp);
sp = amd64_push_arguments (regcache, nargs, args, sp, struct_return);
/* Pass "hidden" argument". */
if (struct_return)