aboutsummaryrefslogtreecommitdiff
path: root/gdb/i386-tdep.h
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2010-01-29 05:27:36 +0000
committerJoel Brobecker <brobecker@gnat.com>2010-01-29 05:27:36 +0000
commit3af6ddfec6363b97f9c850fef9f33e3bd2ad259c (patch)
tree7074dc990811de7f0acc59fd2f8103add8a08833 /gdb/i386-tdep.h
parent4966b6c22876c227576d85cb4045080345d4b41e (diff)
downloadgdb-3af6ddfec6363b97f9c850fef9f33e3bd2ad259c.zip
gdb-3af6ddfec6363b97f9c850fef9f33e3bd2ad259c.tar.gz
gdb-3af6ddfec6363b97f9c850fef9f33e3bd2ad259c.tar.bz2
amd64-windows: 32 bytes allocated on stack by caller for integer parameter registers
* i386-tdep.h (struct gdbarch_tdep): Add new field integer_param_regs_saved_in_caller_frame. * amd64-windows-tdep.c (amd64_windows_init_abi): Set tdep->integer_param_regs_saved_in_caller_frame to 1. * amd64-tdep.c (amd64_push_dummy_call): Allocate some memory on stack if tdep->integer_param_regs_saved_in_caller_frame is set.
Diffstat (limited to 'gdb/i386-tdep.h')
-rw-r--r--gdb/i386-tdep.h18
1 files changed, 14 insertions, 4 deletions
diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h
index f79a15d..5915eb9 100644
--- a/gdb/i386-tdep.h
+++ b/gdb/i386-tdep.h
@@ -82,12 +82,12 @@ struct gdbarch_tdep
int call_dummy_num_integer_regs;
int *call_dummy_integer_regs;
- /* Classify TYPE according to calling conventions, and store
- the result in CLASS. Used on amd64 only. */
+ /* Used on amd64 only. Classify TYPE according to calling conventions,
+ and store the result in CLASS. */
void (*classify) (struct type *type, enum amd64_reg_class class[2]);
- /* Non-zero if the first few MEMORY arguments should be passed by
- pointer.
+ /* Used on amd64 only. Non-zero if the first few MEMORY arguments
+ should be passed by pointer.
More precisely, MEMORY arguments are passed through the stack.
But certain architectures require that their address be passed
@@ -95,6 +95,16 @@ struct gdbarch_tdep
available for argument passing. */
int memory_args_by_pointer;
+ /* Used on amd64 only.
+
+ If non-zero, then the callers of a function are expected to reserve
+ some space in the stack just before the area where the PC is saved
+ so that the callee may save the integer-parameter registers there.
+ The amount of space is dependent on the list of registers used for
+ integer parameter passing (see component call_dummy_num_integer_regs
+ above). */
+ int integer_param_regs_saved_in_caller_frame;
+
/* Floating-point registers. */
struct regset *fpregset;
size_t sizeof_fpregset;