aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorMichal Ludvig <mludvig@suse.cz>2003-08-07 11:26:42 +0000
committerMichal Ludvig <mludvig@suse.cz>2003-08-07 11:26:42 +0000
commitfd83badabb576ef0d2153334e0f1ab99500b6548 (patch)
tree6b9cb4f1571cc581ae3c24f5acb1949b999efd8f /gdb
parent9c5bfbb7fd76589a332126f99a4e195e46da207f (diff)
downloadgdb-fd83badabb576ef0d2153334e0f1ab99500b6548.zip
gdb-fd83badabb576ef0d2153334e0f1ab99500b6548.tar.gz
gdb-fd83badabb576ef0d2153334e0f1ab99500b6548.tar.bz2
2003-08-07 Michal Ludvig <mludvig@suse.cz>
* x86-64-tdep.c (x86_64_push_arguments): Skip the red zone.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog2
-rw-r--r--gdb/x86-64-tdep.c8
2 files changed, 10 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 71d5b5c..146ae07 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,7 @@
2003-08-07 Michal Ludvig <mludvig@suse.cz>
+
* x86-64-tdep.c (x86_64_dwarf_regmap): Correct register numbers.
+ (x86_64_push_arguments): Skip the red zone.
2003-08-05 Andrew Cagney <cagney@redhat.com>
diff --git a/gdb/x86-64-tdep.c b/gdb/x86-64-tdep.c
index 2e682dc..29dca25 100644
--- a/gdb/x86-64-tdep.c
+++ b/gdb/x86-64-tdep.c
@@ -613,6 +613,14 @@ x86_64_push_arguments (struct regcache *regcache, int nargs,
int stack_values_count = 0;
int *stack_values;
stack_values = alloca (nargs * sizeof (int));
+
+ /* Before storing anything to the stack we must skip
+ the "Red zone" (see the "Function calling sequence" section
+ of AMD64 ABI).
+ It could have already been skipped in the function's
+ prologue, but we don't care and will easily skip it once again. */
+ sp -= 128;
+
for (i = 0; i < nargs; i++)
{
enum x86_64_reg_class class[MAX_CLASSES];