* 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:
parent
562c50c218
commit
6470d25069
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user